CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  应用实例

请教一个简单的存储过程该怎么写。

楼主wang_solaris(魔镜)2005-03-29 15:54:05 在 MS-SQL Server / 应用实例 提问

比如这是一个计算某表有多少条记录的存储过程,传两个参数,一个是表名,一个是返回型。  
  CREATE   PROCEDURE   GetRowCount  
  @tblName       varchar(800),               --   表名  
  @doCount     int   out       --   返回记录总数  
  AS  
   
  declare   @strSQL       varchar(800)    
   
  set   @strSQL   =   'select   @doCount   =   count(*)   from   '   +   @tblName    
  --上一句写法会报错,但就不知该怎么写。  
   
  EXEC(@strSQL)  
  GO  
   
  主要问题是SQL语句必须是定符串拼接成的,不知怎样在字符串中计算变量。请指教。  
  问题点数:20、回复次数:23Top

1 楼lsxaa(小李铅笔刀)回复于 2005-03-29 15:56:54 得分 0

sp_executesqlTop

2 楼wang_solaris(魔镜)回复于 2005-03-29 15:58:52 得分 0

能不能具体一点啊?  
  怎么写啊Top

3 楼mdx(巍巍太行山)回复于 2005-03-29 15:59:03 得分 0

...........  
  AS  
  select   count(*)   from   @tblName    
  set   @doCount=@@rowcount  
  GO  
  Top

4 楼talantlee(小刀(bluedagger.cn))回复于 2005-03-29 16:00:58 得分 0

CREATE   PROCEDURE   GetRowCount  
  @tblName       varchar(800),               --   表名  
  @doCount     int   out       --   返回记录总数  
  AS  
   
  declare   @strSQL       varchar(800)    
   
  set   @strSQL   =   'select'+   @doCount+'   =   count(*)   from   '   +   @tblName    
  --上一句写法会报错,但就不知该怎么写。  
   
  EXEC(@strSQL)  
  GO  
  Top

5 楼wang_solaris(魔镜)回复于 2005-03-29 16:02:50 得分 0

select   count(*)   from   @tblName    
  ???  
  这样好象不行吧Top

6 楼lsxaa(小李铅笔刀)回复于 2005-03-29 16:04:28 得分 0

CREATE   PROCEDURE   GetRowCount  
  @tblName       nvarchar(800),               --   表名  
  @doCount       int   out       --   返回记录总数  
  AS  
   
  declare   @strSQL       nvarchar(800)    
   
  set   @strSQL   =   N'select   @doCount   =   count(*)   from   '   +   @tblName  
   
  sp_execute   @strSQL,'@doCount   int   out',@doCountTop

7 楼lsxaa(小李铅笔刀)回复于 2005-03-29 16:05:31 得分 0

CREATE   PROCEDURE   GetRowCount  
  @tblName       nvarchar(800),               --   表名  
  @doCount       int   out       --   返回记录总数  
  AS  
   
  declare   @strSQL       nvarchar(800)    
   
  set   @strSQL   =   N'select   @doCount   =   count(*)   from   '   +   @tblName  
   
  sp_executesql   @strSQL,'@doCount   int   out',@doCount  
  Top

8 楼wang_solaris(魔镜)回复于 2005-03-29 16:10:34 得分 0

lsxaa(小李铅笔刀),你好,  
   
  不行嘛。它说'sp_executesql'附近有语法错误Top

9 楼lsxaa(小李铅笔刀)回复于 2005-03-29 16:13:11 得分 0

不好意思,少写了一个   exec     呵呵  
   
  CREATE   PROCEDURE   GetRowCount  
  @tblName       nvarchar(800),               --   表名  
  @doCount       int   out       --   返回记录总数  
  AS  
   
  declare   @strSQL       nvarchar(800)    
   
  set   @strSQL   =   N'select   @doCount   =   count(*)   from   '   +   @tblName  
   
  exec     sp_executesql   @strSQL,'@doCount   int   out',@doCountTop

10 楼wang_solaris(魔镜)回复于 2005-03-29 16:44:58 得分 0

请恕在下愚钝,在查询分析器里该怎么调用啊?  
  GetRowCount   'table1','@doCount'  
  这样啊行啊?  
  Top

11 楼lsxaa(小李铅笔刀)回复于 2005-03-29 16:52:08 得分 0

exec   @doCount=GetRowCount   'table1'  
  Top

12 楼wang_solaris(魔镜)回复于 2005-03-29 16:54:14 得分 0

lsxaa(小李铅笔刀)   ,你好,  
   
  它说必须声明变量   '@doCount'Top

13 楼lsxaa(小李铅笔刀)回复于 2005-03-29 16:57:52 得分 0

那你就声明一个贝  
   
  declare   @doCount   int  
   
  exec   @doCount=GetRowCount   'table1'Top

14 楼lsxaa(小李铅笔刀)回复于 2005-03-29 16:58:14 得分 0

declare   @doCount   int  
   
  exec   @doCount=GetRowCount   'table1'  
   
  select   @doCountTop

15 楼wang_solaris(魔镜)回复于 2005-03-29 17:19:51 得分 0

过程   'GetRowCount'   需要参数   '@doCount',但未提供该参数。Top

16 楼wang_solaris(魔镜)回复于 2005-03-29 17:36:54 得分 0

lsxaa(小李铅笔刀)   ,你好  
   
  现在不报错了。但是结果不对,为NULL。好象  
  exec     sp_executesql   @strSQL,'@doCount   int   out',@doCount  
  这一句不能把@doCount的值输出来。  
   
  你亲自试试。Top

17 楼lsxaa(小李铅笔刀)回复于 2005-03-29 17:40:25 得分 0

declare   @doCount   int  
   
  exec   GetRowCount   'table1',@doCount  
   
  select   @doCount  
  Top

18 楼wang_solaris(魔镜)回复于 2005-03-29 17:49:39 得分 0

lsxaa(小李铅笔刀)   ,谢谢你,  
   
  但还是不能得出结果,输出为空:-(Top

19 楼RamjetZhang(万花从中一点红,玉树临风王小桃是也)回复于 2005-03-29 17:55:45 得分 5

楼上的楼上,少加了个output选项  
  declare   @doCount   int  
   
  exec   GetRowCount   'table1',@doCount   output   --这里out型参数要加这个修饰  
   
  select   @doCountTop

20 楼lsxaa(小李铅笔刀)回复于 2005-03-29 17:55:47 得分 15

declare   @doCount   int  
   
  exec   GetRowCount   'table1',@doCount   out    
   
  select   @doCount  
   
  Top

21 楼lsxaa(小李铅笔刀)回复于 2005-03-29 17:56:11 得分 0

再试哈     不行再找我Top

22 楼lsxaa(小李铅笔刀)回复于 2005-03-29 17:56:30 得分 0

哦,有人看出来了Top

23 楼wang_solaris(魔镜)回复于 2005-03-29 18:16:54 得分 0

哈哈,出来啦。3Q两位大侠。Top

相关问题

  • 存储过程怎么写?
  • 存储过程怎么写??
  • 存储过程怎么写
  • 存储过程怎么写?
  • 简单问题,这样的存储过程怎么写?
  • 一个简单的存储过程 怎么写
  • 这样一个简单的存储过程怎么写,谢谢!
  • 写一个简单的存储过程
  • 帮忙写个简单存储过程!
  • 这个存储过程怎么写?

关键词

  • docount
  • getrowcount
  • strsql
  • intexec
  • tblname
  • 总数asdeclare
  • 报错
  • 参数
  • executesql
  • nvarchar

得分解答快速导航

  • 帖主:wang_solaris
  • RamjetZhang
  • lsxaa

相关链接

  • SQL Server类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo