请帮忙看一下这段简单语句的错误。。
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'...
问题点数:20、回复次数:5Top
1 楼dellair(dellair)回复于 2005-01-20 11:27:34 得分 0
没有人来帮帮忙嘛,,,Top
2 楼dellair(dellair)回复于 2005-01-20 11:43:07 得分 0
哪位老大帮帮呀,在线等,,,Top
3 楼dellair(dellair)回复于 2005-01-20 11:48:28 得分 0
现在改成这样
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'。Top
4 楼passionke(每一步都改变未来,却只能有一种结局!)回复于 2005-01-20 12:34:34 得分 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 outputTop
5 楼dellair(dellair)回复于 2005-01-20 13:05:14 得分 0
解决了,谢谢!Top




