通过动态sql给变量赋值的问题

dongjixing 2006-12-04 04:42:26
declare @count int
declare @sel varchar(1000)

select @sel='select @count=count(*)
from personalaccount a'

EXEC(@sel)


我想通过动态sql给@count赋值,但出现了以下错误,请高手帮忙!谢谢!

服务器: 消息 137,级别 15,状态 1,行 2
必须声明变量 '@count'。
...全文
270 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
dongjixing 2006-12-04
  • 打赏
  • 举报
回复
明白了,再次感谢你hellowork(一两清风)
hellowork 2006-12-04
  • 打赏
  • 举报
回复
不是使用习惯问题.
当需要在动态生成SQL字符串中对变量赋值,并且返回该变量时必须要使用sp_executesql系统存储过程,而不能使用EXEC(),具体请参考sp_executesql帮助.
dongjixing 2006-12-04
  • 打赏
  • 举报
回复
太感谢hellowork(一两清风)了

但仍有一个问题,你为不通过exec()

而要用EXEC sp_executesql

我感觉exec()好用
crazyflower 2006-12-04
  • 打赏
  • 举报
回复
楼上正解
hellowork 2006-12-04
  • 打赏
  • 举报
回复
declare @count int
declare @sel nvarchar(1000) /*声明为nvarchar*/
set @sel='select @count=count(*)
from personalaccount a'
--执行SQL
EXEC sp_executesql @sel,N'@count int OUTPUT',@count OUTPUT
--获得@count
select @count
dongjixing 2006-12-04
  • 打赏
  • 举报
回复
dawugui,谢谢你,但我想通过动态SQL实现,能用动态SQL写出来吗
dawugui 2006-12-04
  • 打赏
  • 举报
回复
--使用sql2000自带数据库pubs
declare @count int

select @count =count(*) from authors

print @count

--结果
23
dawugui 2006-12-04
  • 打赏
  • 举报
回复
declare @count int

select @count =count(*) from personalaccount

print @count

22,209

社区成员

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

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