来个小问题,请看

CainLai 2011-09-23 11:39:28
存储过程中,统计数据总数,然后同时赋值给一个内部变量以便后续代码使用,这样写有问题,该怎么写?

EXECUTE (N'SELECT @RecordCount = COUNT(*) AS RecordCount FROM ' + @QueryStr)

其中@RecordCount就是我想要用来装数据总数的那个变量了……
...全文
134 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
-晴天 2011-09-23
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 cainlai 的回复:]
大概懂什么意思了,我去研究下 再查下资料加深印象
[/Quote]
不错,这才是好的学习态度!
CainLai 2011-09-23
  • 打赏
  • 举报
回复
大概懂什么意思了,我去研究下 再查下资料加深印象
-晴天 2011-09-23
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 cainlai 的回复:]
引用 9 楼 qianjin036a 的回复:
否则要用SP_EXECUTESQL来对动态语句的变量进行传递.因为exec(...)内部语句是另一个会话,不能用当前会话的变量.

那应该是像8L 这样了:
EXECUTE SP_EXECUTESQL (N'SELECT ' + @RecordCount + ' = COUNT(*) FROM ' + @QueryStr)
我去试下
[/Quote]
8楼不行.
koumingjie 2011-09-23
  • 打赏
  • 举报
回复

declare @RecordCount int
declare @QueryStr varchar(50)
declare @sql nvarchar(4000)
set @QueryStr='tbl_Schedule'
set @sql='select @a=count(*) from ' + @QueryStr
exec sp_executesql @sql,N'@a int output',@RecordCount output
select @RecordCount
-晴天 2011-09-23
  • 打赏
  • 举报
回复
例:
set @a='select @dd=isnull(max('+@bh+'),'''') from tablea where ('+@bh+' like '''+@wh+'%'')'
exec SP_EXECUTESQL @a,N'@dd varchar(50) output ',@dd output
select @dd
CainLai 2011-09-23
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 qianjin036a 的回复:]
否则要用SP_EXECUTESQL来对动态语句的变量进行传递.因为exec(...)内部语句是另一个会话,不能用当前会话的变量.
[/Quote]
那应该是像8L 这样了:
EXECUTE SP_EXECUTESQL (N'SELECT ' + @RecordCount + ' = COUNT(*) FROM ' + @QueryStr)
我去试下
-晴天 2011-09-23
  • 打赏
  • 举报
回复
否则要用SP_EXECUTESQL来对动态语句的变量进行传递.因为exec(...)内部语句是另一个会话,不能用当前会话的变量.
txyangxy 2011-09-23
  • 打赏
  • 举报
回复
拼SQL,像后面的变量那样

EXECUTE (N'SELECT ' + @RecordCount + ' = COUNT(*) FROM ' + @QueryStr)

CainLai 2011-09-23
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 qianjin036a 的回复:]
如果是在存储过程中运用动态语句,则:

SQL code
create table #t(recordcount int)
insert into #t
EXECUTE (N'SELECT COUNT(*) FROM ' + @QueryStr)
select * from #t
[/Quote]
只能这样绕一下了么,不能直接在一个语句里面赋值给变量?
xxjltan 2011-09-23
  • 打赏
  • 举报
回复
我是来看高手的
-晴天 2011-09-23
  • 打赏
  • 举报
回复
如果是在存储过程中运用动态语句,则:
create table #t(recordcount int)
insert into #t
EXECUTE (N'SELECT COUNT(*) FROM ' + @QueryStr)
select * from #t
txyangxy 2011-09-23
  • 打赏
  • 举报
回复
你不是赋给变量了吗,取变量用啊
CainLai 2011-09-23
  • 打赏
  • 举报
回复
去掉以后 提示必须声明变量 '@RecordCount'
而这个变量我肯定在前面申明过了
CainLai 2011-09-23
  • 打赏
  • 举报
回复
啊?我取别名只是想方便在ASP中调用,比如rs("起的别名"),如果不能起别名那岂不是只有用rs(0),rs(1)类似这样的了?
txyangxy 2011-09-23
  • 打赏
  • 举报
回复
不起别名,去掉AS RecordCount
CainLai 2011-09-23
  • 打赏
  • 举报
回复
谢谢鼓励,代码已经完全没问题了,刚才出去吃饭了,现在结贴

34,587

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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