不知道你上一题是什么,大体这样:declare @sql nvarchar(1000)
set @sql='select @cw='+@cw_m+',@hl='+@hl_m+'
       from brzz_cy
       where 住院号='''+@bah+''' and 入院日期='''+@ryrq+''''
exec sp_executesql @sql,N'@cw 数据类型 output,@hl 数据类型 output',@cw output,@hl output如果入院日期是DATETIME类型,要做一些转换。如:convert 函数

解决方案 »

  1.   

    declare @sql nvarchar(1000),@cw_m Nvarchar(10),@ decimal (10,2),@bah int,
    @ryrq datetime,@hl_m Nvarchar(10),@hl decimal (10,2)
    set @k='床位费'
    set @bah = 
    set @ryrq= 
    set @sql=N'select ' + ''' @cw '''+ '= '+ @cw_m +',  ' +'''  @hl ''' +  @hl_m +' from brzz_cy where 住院号='+ cast(@zybh as nvarchar(10))  + ' and '+ ' lrrq > '+ convert(nvarchar(20),@ryrq,121) 
    EXECUTE sp_executesql @sql ,N'@cw decimal output,@hldecimal output',@ output
    ,@hl output
      

  2.   

    declare @sql nvarchar(1000)
    declare @cw int
    declare @hl int
    declare @cw_m varchar(10)
    declare @hl_m varchar(10)
    set @cw_m = ...
    set @hl_m = ...
    set @sql='select @cw = '+ @cw_m + ', @hl = ' + @hl_m + 'from brzz_cy where 住院号= "' + @bah + '" and 入院日期 ="' + @ryrq + '"'
    exec sp_executesql @sql, N'@cw int output, @hl int output', @cw output, @hl output
    select @hl, @cw
      

  3.   


    1、
    exec sp_executesql sql语句,参数列表,对应的参数... 如:declare @sql nvarchar(1000)
    declare @cw int
    declare @hl int
    declare @cw_m varchar(10)
    declare @hl_m varchar(10)
    set @cw_m = 'count(zz)'
    set @hl_m = 'sum(zz)'
    set @sqlN=N'select @cw = '+ @cw_m + ', @hl = ' + @hl_m + 'from brzz_cy where 住院号=''' + @bah + ''' and 入院日期 =''' + @ryrq + ''''
    exec sp_executesql @sql, N'@cw int output, @hl int output', @cw output, @hl output
    select @hl, @cw
    2、
    在sql语句里你不最好不要用",用''来转义如:
    select '''',''''''
      

  4.   

    pengdali,你好,谢谢你!
       zz应该是变量,利用sql语句获得费用的标准。即是@zz,而@zz是:@zz='床位费+保温费'。
       从而执行你的sql语句后变成了:
           select @cw =sum(@zz), @hl = sum(@zz1) 
           from brzz_cy 
           where 住院号='0000000005' and 入院日期 ='2002-10-01'
       @zz没有变成'床位费+保温费'。
       还望你指教,期待你的解答!
      

  5.   

    谢谢各位了!
       我再解释以下了,关系对照如下:
           select  @cw=床位费+保温费    select @cw=@cw_m
           from brzz_cy                 from brzz_cy
       @cw_m是变量,@cw_m=床位费+保温费,从而要获取@cw。
    谢谢大家了!
      

  6.   

    declare @sql nvarchar(1000)
    declare @cw int
    declare @cw_m varchar(10)
    set @cw_m = '床位费+保温费'
    set @sqlN=N'select @cw = sum('+@cw_m+') from brzz_cy where 住院号=''' + @bah + ''' and 入院日期 =''' + @ryrq + ''''
    exec sp_executesql @sql, N'@cw int output, @hl int output', @cw output
    select  @cw
      

  7.   

    解决办法我捎加整理如下,希望对别的好友能有所帮助:
    declare @sql nvarchar(1000)
    declare @cw1 decimal(18,2)
    declare @cw_m varchar(100)
    declare @bah char(10)
    declare @ryrq datetime
    select @bah='0000000010'
    select @ryrq='2002-10-10'
    set @cw_m = '床位费+西药费'
    set @sql=N'select @cw = sum('+@cw_m+') from brzz_cy where 住院号=''' + @bah + ''' and 入院日期 =''' + cast(@ryrq as char(20)) + ''''
    exec sp_executesql @sql, N'@cw int output', @cw1 output
    select  @cw1
    谢谢!