Create Procedure GetMaxID
@TableName varchar(100), @ID int output
as
begin
declare @sql nvarchar(1000)
set @sql='select @ID = max(ID) from '+@TableName
exec sp_executesql @sql,N'@id int output',@id output
end
exec sp_executesql @sql,N'@id int output,@a ...',@id output...

解决方案 »

  1.   

    eg:--存储过程带返回值
    create proc test
        @tablename varchar(20),  --表名
        @total int output        --返回值
    as
    begin
       declare @sqltext nvarchar(2000)
       set @sqltext='select @a=count(*) from '+@tablename  
       exec sp_executesql @sqltext,'@a int output',@total    --返回@total 
    endDrop proc test
      

  2.   

    你要改为这样:注意 @s 必须为 nvarchar类型
    ...
    OPEN t_cursorFETCH NEXT FROM t_cursor INTO @tname, @tablenamedeclare @money moneywhile @@FETCH_STATUS = 0
    BEGIN
    set @s='select sum(money) as a from '+@tablename
    exec sp_executesql @s,N'@money money output',@money outputFETCH NEXT FROM t_cursor INTO @tname, @tablename
    ENDCLOSE t_cursor
      

  3.   

    写错了,忘了@money,这样:
    ...
    OPEN t_cursorFETCH NEXT FROM t_cursor INTO @tname, @tablenamedeclare @money moneywhile @@FETCH_STATUS = 0
    BEGIN
    set @s=N'select @money=sum(money) from '+@tablename
    exec sp_executesql @s,N'@money money output',@money outputFETCH NEXT FROM t_cursor INTO @tname, @tablename
    ENDCLOSE t_cursor
      

  4.   

    declare @sql nvarchar(4000)
    declare @monty int
    set @sql='select @money=sum(money) from '+@tablename
    exec sp_executesql @sql,N'@money int output',@money output
    select @money