求助一sql语句动态执行怎么写

nevereverlost 2008-01-07 01:30:53
语句如下:

select @totalcount=count(id) from @tablename

我这样写错了吗?

exec('select '+@totalcount+'=count(id) from '+@tablename)
...全文
102 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
nevereverlost 2008-01-18
  • 打赏
  • 举报
回复
谢谢你们~!
zefuzhang2008 2008-01-07
  • 打赏
  • 举报
回复
正确用法:
declare @totalcount int
declare @sql nvarchar(2000)

set @sql='select @t=count(id) from '+@tablename

EXEC sp_executesql @sql,N'@t AS INT OUTPUT',@t=@totalcount OUTPUT
nevereverlost 2008-01-07
  • 打赏
  • 举报
回复
恩,好像有时的加int会出错有的就不会~为什么?
还有哦,关键的是print @totalcount输出的是空值啊,怎么回事?记录数肯定是>)
昵称被占用了 2008-01-07
  • 打赏
  • 举报
回复
11楼错了
应该

declare @totalcount int
declare @sql nvarchar(2000)

set @sql='select @t=count(id) from '+@tablename
exec sp_executesql @sql,N'@t varchar(1000) output',@totalcount output
print @totalcount


nevereverlost 2008-01-07
  • 打赏
  • 举报
回复
恩。谢谢你们
nevereverlost 2008-01-07
  • 打赏
  • 举报
回复
谢谢你们呵呵~!是这样写的~!

declare @totalcount int
declare @sql nvarchar(2000)
declare @t varchar(1000)

set @sql='select @t=count(id) from '+@tablename
exec sp_executesql @sql,N'@t varchar(1000) output','@totalcount int output'
print @totalcount

刚才没弄明白sp_executesql这个存储过程参数呵呵~!
wzy_love_sly 2008-01-07
  • 打赏
  • 举报
回复
create table tb  (id int,name varchar(10))
insert into tb select 1,'a'
insert into tb select 2,'b'
insert into tb select 3,'c'
insert into tb select 4,'d'

declare @tbname nvarchar(20)
set @tbname= 'tb'
declare @i int,@sql nvarchar(1000)
set @sql= 'select @i=count(1) from '+@tbname
exec sp_executesql @sql,N'@i int output' ,@i out

select @i


4

动态语法
nevereverlost 2008-01-07
  • 打赏
  • 举报
回复

declare @totalcount int
declare @sql nvarchar(2000)
set @sql='select @totalcount=count(id) from '+@tablename
exec sp_executesql @sql

这样吗?但是提示@totalcount变量必须申明,可我已经申明了啊~!
nevereverlost 2008-01-07
  • 打赏
  • 举报
回复
我不知道怎么写啊,能帮我写下吗?
顺便说下为什么我的写法不行呀?
谢谢呀~!
nevereverlost 2008-01-07
  • 打赏
  • 举报
回复

set @sql='select @totalcount=count(id) from '+@tablename

你这样写有错吧!~@totalcount是变量

你能说下我上面那句为什么错吗?
wzy_love_sly 2008-01-07
  • 打赏
  • 举报
回复
sp_executesql 用它输出
昵称被占用了 2008-01-07
  • 打赏
  • 举报
回复
笔误
delare
--〉
declare
昵称被占用了 2008-01-07
  • 打赏
  • 举报
回复


declare @sql nvarchar(2000)
set @sql='select @totalcount=count(id) from '+@tablename
delare @t int

exec sp_executesql @sql,N'@totalcount int output',@t int output

print @t

nevereverlost 2008-01-07
  • 打赏
  • 举报
回复
那请问怎么写?
nevereverlost 2008-01-07
  • 打赏
  • 举报
回复
提示:'=' 附近有语法错误。
郁闷
昵称被占用了 2008-01-07
  • 打赏
  • 举报
回复
错了

22,298

社区成员

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

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