Alter PROCEDURE dbo.Test
   @seltab varchar(500)AS
begin
declare @count  int
declare @sql nvarchar(1000)

set @sql = N'select @count = count(*) from '+@seltab
exec sp_executesql @sql,N'@count int Output',@count Output

if @count>0
   print 'exists'
else
   print 'no'
end   
RETURN

解决方案 »

  1.   

    Alter PROCEDURE dbo.Test
       @seltab varchar(500)AS
    begin
    declare @count  int
    declare @sql nvarchar(1000)

    set @sql = N'select @count = count(*) from '+@seltab
    exec sp_executesql @sql,N'@count int Output',@count Output --都加上Output

    if @count>0
       print 'exists'
    else
       print 'no'
    end   
    RETURN
      

  2.   

    exec sp_executesql @sql,N'@count int',@count
    ===================>
    exec sp_executesql @sql,N'@count int output',@count output
      

  3.   

    alter PROCEDURE Test1
       @seltab varchar(500)
    AS
    begin
    declare @count  int
    set @count=0
    declare @sql nvarchar(1000)

    set @sql = N'select @count = count(*) from '+@seltab
    exec sp_executesql @sql,N'@count int output',@count output

    if @count>0
       print 'exists'
    else
       print 'no'
    end   
    RETURN 
      

  4.   

    ALTER PROCEDURE dbo.Test
       @seltab varchar(500)AS
    begin
    declare @count  int
    declare @sql nvarchar(1000)

    set @sql = N'select @count = count(*) from '+@seltab
    exec sp_executesql @sql,N'@count int out',@count out

    if @count>0
       print 'exists'
    else
       print 'no'
    end   
    RETURN
      

  5.   

    一个更简单的方法。Alter PROCEDURE dbo.Test
       @seltab varchar(500)AS
    begin
    if Exists(Select 1 from SysColumns Where ID=OBJECT_ID(@seltab))
       print 'exists'
    else
       print 'no'
    end   
    RETURN
      

  6.   

    谢谢paoluo(一天到晚游泳的鱼) ,vivianfdlpw() ,phantomMan(去年Delphi,年底.net,今年5月SQL,现在XML,马上Socket.)、libin_ftsafe(子陌红尘)
    问题解决了,马上结帖。
    唉,原来这么简单。