SET NOCOUNT ON
DECLARE @tablename nchar(80),@sql nchar(4000)declare @colnum nchar(40)   --定义放在外面,不要在循环中定义(那样成了重复定义)Print '-------begin----------'DECLARE tablename CURSOR FOR
Select name from dbo.sysobjects where xtype='U'OPEN tablenameFETCH NEXT FROM tablename
INTO @tablenameWHILE @@FETCH_STATUS =0
BEGIN
  --declare @colnum nchar(40) 
  set @sql='select @colnum=count(*) from ' + @tablename
  exec sp_executesql @sql,--sq_executesql -->sp_executesql
N'@colnum nchar(40) out', --在调用中要声明
@colnum out  FETCH NEXT FROM tablename  --游标要移动,否则成死循环
INTO @tablename
ENDCLOSE tablename
DEALLOCATE tablename
GO

解决方案 »

  1.   

    SET NOCOUNT ON
    DECLARE @tablename nchar(80),@sql nchar(4000)Print '-------begin----------'DECLARE tablename CURSOR FOR
    Select name from dbo.sysobjects where xtype='U'OPEN tablenameFETCH NEXT FROM tablename
    INTO @tablenameWHILE @@FETCH_STATUS =0
    BEGIN
      declare @colnum nchar(40) --这里可以不改,是我搞错了
      set @sql='select @colnum=count(*) from ' + @tablename
      exec sp_executesql @sql,--sq_executesql -->sp_executesql
    N'@colnum nchar(40) out', --在调用中要声明
    @colnum out  print '表名:'+rtrim(@tablename)+' 记录数:'+@colnum --添加输出显示语句 FETCH NEXT FROM tablename  --游标要移动,否则成死循环
    INTO @tablename
    ENDCLOSE tablename
    DEALLOCATE tablename
    GO