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 sysobjectsCreate 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.   

    select @ls_Sqlstatement = ' select @li_bl = discount from ' + @ls_tsmtab
      

  2.   

    试试:
    select @ls_Sqlstatement = ' select ' + @li_bl +' = cast(discount as int) from ' + @ls_tsmtab
      

  3.   

    要用动态参数传递
    declare @ls_Sqlstatement Nvarchar(100), --注意这里的数据类型
            @ls_tsmtab varchar(9),
            @li_dmlb decimal(4, 0),
            @li_dmsb decimal(6 ,0),
            @li_bl intselect @ls_tsmtab = 'tsm00000'
    select @li_dmlb = 1
    select @li_dmsb = 0select @ls_Sqlstatement = ' select @rli_bl= discount from ' + @ls_tsmtab  --这里做调整
        
    select @ls_Sqlstatement = @ls_Sqlstatement + ' where itemtype = '+ str(@li_DMlb) + ' and itemcode = '+ str(@li_dmsb)exec sp_executesql @ls_Sqlstatement,N'@rli_bl int output',@li_bl output  --这里改为动态参数传递的执行方式print @li_bl
      

  4.   

    thank you  zjcxc(邹建)
    问题解决了