存储过程中的@@rowcount的值问题,高手请进

pkumse 2003-10-16 11:54:33
执行一段sql语句,然后print @@rowcount,执行该过程,输出5(假定。)
但是再在后面加上一条print @@rowcount,  则第二次输出0。为什么?
...全文
62 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
jxc163 2003-12-15
  • 打赏
  • 举报
回复
Vileboy:你上面的写法,我不是无法得到输入的结果集

我的要求是同时得到Select * From @TableName结果集以及行数.
vileboy 2003-12-15
  • 打赏
  • 举报
回复
select count(*) from 你的表
加入你的表中有8条记录

结果
-----------
8

(所影响的行数为 1 行)这里的1才是@@rowcount
vileboy 2003-12-15
  • 打赏
  • 举报
回复
试试改成下面的样子:

create procedure viewall @tablelname char(8),@counts integer output
as
exec('select '+@counts+'=count(*) from '+@tableName)

go

输出参数不用赋初值
jxc163 2003-12-15
  • 打赏
  • 举报
回复
我的一个存储过程是这样写的
create procedure viewall @tablelname char(8),@counts integer output
as
exec('select * from '+@tableName)
set @counts=@@RowCounts

go

然后我在Delphi中用TAdodataset调用这个存储过程,并声明了两个变量,一个String,一个integer;执行时我发现返加在Counts的值很大(返回4条记录,返回的Counts有4万多),不知道是什么原因?
还有就是我如果在Delphi中使用TAdoDataSet中使用这个存储过程,而不用给Counts赋初值?

TKS
sdhdy 2003-10-16
  • 打赏
  • 举报
回复
print @@rowcount不返回受影响的行数的。
txlicenhe 2003-10-16
  • 打赏
  • 举报
回复
@@ROWCOUNT
返回受上一语句影响的行数。

语法
@@ROWCOUNT

返回类型
integer

注释
任何不返回行的语句将这一变量设置为 0 ,如 IF 语句。

22,206

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧