如何在exec('SQLCOMMAND')中修改局部变量?

孩皮妞野 2003-05-07 06:06:46
我想要的是类似:

DECLARE @rec_cnt INTEGER

EXEC('SELECT @rec_cnt=COUNT(*) FROM '+@some_table)

其中@some_table是存放了一个表名称的局部变量[比如作为参数传入]

希望达到的效果是
DECLARE @rec_cnt INTEGER

SELECT @rec_cnt=COUNT(*) FROM actual_table_name

当然,上面的做法行不通,exec()中不知道近在咫尺的局部变量@rec_cnt, 请问如何达到目的?

...全文
86 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
孩皮妞野 2003-05-23
  • 打赏
  • 举报
回复
谢谢各位,我马上试一下。
pengdali 2003-05-18
  • 打赏
  • 举报
回复
1、
declare @sql nvarchar(1000),@rec int
set @sql='SELECT @rec_cnt=COUNT(*) FROM pubs..authors'
exec sp_executesql @sql,N'@rec_cnt int output',@rec output

select @rec
2、
这是应为你用了:“ ”而不是" ".前面一个是全角的空格,后面一个是半角的空格,
sqlserver是不认全角的空格的你拷贝上面的代码就没有问题了
mjhnet 2003-05-18
  • 打赏
  • 举报
回复
--这样:
declare @sql nvarchar(1000),@rec int
set @sql='SELECT @rec_cnt=COUNT(*) FROM pubs..authors'
print @sql
exec sp_executesql @sql,N'@rec_cnt int output',@rec output

select @rec
--是你的控制字符有问题
孩皮妞野 2003-05-18
  • 打赏
  • 举报
回复
我的SQL Server 2000. 在QueryAnalyzer中输入:

declare @sql nvarchar(1000),@rec int
set @sql='SELECT @rec_cnt=COUNT(*) FROM pubs..authors'
exec sp_executesql @sql,N'@rec_cnt int output',@rec output

select @rec

按F5, 运行结果:
服务器: 消息 170,级别 15,状态 1,行 1
第 1 行: ' ' 附近有语法错误。

(所影响的行数为 1 行)

而把exec行注释掉就不会有问题,所以提示第一行有问题是无稽之谈。麻烦各位再看看。
caiyunxia 2003-05-16
  • 打赏
  • 举报
回复
pengdali(大力) ( ) 可以,
孩皮妞野 2003-05-12
  • 打赏
  • 举报
回复
pengdali(大力) ( )

谢谢! 老兄一定可以搞定这个问题。

不过上面的办法还不行。难道一定要用临时表吗?
孩皮妞野 2003-05-12
  • 打赏
  • 举报
回复
pengdali(大力) ( )

谢谢! 老兄一定可以搞定这个问题。

不过上面的办法还不行。难道一定要用临时表吗?
pengdali 2003-05-10
  • 打赏
  • 举报
回复
declare @sql nvarchar(1000),@rec int
set @sql='SELECT @rec_cnt=COUNT(*) FROM '+@some_table
exec sp_executesql @sql,N'@rec_cnt int output',@rec output

select @rec
孩皮妞野 2003-05-09
  • 打赏
  • 举报
回复
wuqiuzhi(孜孜) ( ),

不用说这个肯定是可以的,只不过未免效率太低,我是想看有没有直接点的办法。

不管怎样,谢了!
wuqiuzhi 2003-05-09
  • 打赏
  • 举报
回复
我刚才这样作了,还可以
drop table ##a

CREATE Table ##a (
num int)

exec('insert into ##a(num) select count(*) from tttt')
select * from ##a
不知你是否用的上,可以试一下。
孩皮妞野 2003-05-09
  • 打赏
  • 举报
回复
我试了一下,两个都不行。 前一个总返回1, 后一个运行时出错。
yoki 2003-05-07
  • 打赏
  • 举报
回复
EXEC('SELECT '+@rec_cnt+'=COUNT(*) FROM '+@some_table)
linzhisong 2003-05-07
  • 打赏
  • 举报
回复
EXEC('SELECT * FROM '+@some_table)
set @rec_cnt=@@rowcount

应该就可以了

34,588

社区成员

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

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