参考:declare @tcnt int
declare @paras varchar(100)
DECLARE @SQLString NVARCHAR(500)
set @paras ='1,3,5'
set @sqlstring=N'select @cnt=count(*) from sysobjects where id in ('+@paras+')'set @tcnt=0
execute sp_executesql 
          @sqlstring,
          N'@cnt int output',
  @cnt=@tcnt output
select @tcnt
select * from sysobjects
参考:
Create Procedure GetMaxID
@TableName varchar(100), @ID int output
as
begin
declare @sql nvarchar(1000)
set @sql='select @ID = count(ID) from '+@TableName
exec sp_executesql @sql,N'@id int output',@id output
end

解决方案 »

  1.   

    可参考http://expert.csdn.net/Expert/topic/2364/2364046.xml?temp=.6850092
      

  2.   

    CREATE Procedure C_ShowMessage
    (
    @ClassId int,
    @Rec int output
    )
    ASDECLARE @TableName nvarchar(20),@sql varchar(1000)
    SELECT @TableName = 'Message'+CAST(@ClassId/7000 AS NVARCHAR)set @sql='SELECT @Rec = count(*) From '+@TableName+' Where ClassId='+@ClassIdexec sp_executesql @sql,N'@Rec int output',@Rec outputEXEC('SELECT [Id],[Name],Content,AddTime From '+@TableName+' Where ClassId='+@ClassId+' Order By AddTime Desc')GO
      

  3.   

    CREATE Procedure C_ShowMessage
    @ClassId int,
    @Rec int output
    ASDECLARE @TableName nvarchar(20)
    SELECT @TableName = 'Message'+CAST(@ClassId/7000 AS NVARCHAR(100))declare @sql nvarchar(4000)set @sql=N'SELECT @Rec = count(*) From '+@TableName+' Where ClassId='+@ClassIdexec sp_executesql @sql,N'@Rec int output',@Rec outputEXEC('SELECT [Id],[Name],Content,AddTime From '+@TableName+' Where ClassId='+@ClassId+' Order By AddTime Desc')GO