请帮忙看一下这段简单语句的错误。。

dellair 2005-01-20 10:02:24
if exists(select * from sysobjects where name = 'counttable') drop table counttable
create table counttable(tablename nvarchar(20),record int)
declare @tablename nvarchar(20)
declare @i int
declare @sql nvarchar(200)
declare detail cursor for select [name] from sysobjects where type='u'
open detail
fetch next from detail into @tablename
while @@fetch_status = 0
begin
set @sql = 'select @i=count(*) from '+@tablename
exec @sql
insert into counttable(tablename,record) values(@tablename,@i)
fetch next from detail into @tablename
end
close detail
deallocate detail
select * from counttable

错误信息提示:未能找到存储过程 'select @i=count(*) from Orders'...
...全文
67 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
passionke 2005-01-20
  • 打赏
  • 举报
回复
set @sql = 'select @i = count(*) from '+ @tablename
exec(@sql)
改:
set @sql = 'select @i = count(*) from '+ @tablename
exec sp_executesql @sql, N'@i int output', @i output
dellair 2005-01-20
  • 打赏
  • 举报
回复
现在改成这样
if exists(select * from sysobjects where name = 'counttable') drop table counttable
create table counttable(tablename nvarchar(100),record int)
declare @tablename nvarchar(100)
declare @i int
declare @sql nvarchar(200)
declare detail cursor for select [name] from sysobjects where type='u'
open detail
fetch next from detail into @tablename
while @@fetch_status = 0
begin
set @sql = 'select @i = count(*) from '+ @tablename
exec(@sql)
insert into counttable(tablename,record) values(@tablename,@i)
fetch next from detail into @tablename
end
close detail
deallocate detail
select * from counttable

错误是:必须声明变量 '@i'。
dellair 2005-01-20
  • 打赏
  • 举报
回复
哪位老大帮帮呀,在线等,,,
dellair 2005-01-20
  • 打赏
  • 举报
回复
没有人来帮帮忙嘛,,,
dellair 2005-01-20
  • 打赏
  • 举报
回复
解决了,谢谢!

34,588

社区成员

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

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