set @sql1=' where iss_mcht_id=' + @mchtselect @RSA_sum=(select sum(per_trans_amt_successful) from [L2SettleDB].[dbo].[l2_sum_transaction] where 1=1)
想把第一条语句中的@sql1加第二句的where 1=1处,怎样加 

解决方案 »

  1.   

    你是需要给WHERE 加条件吧,找到对应的字段然后等于就可以了的吧。
    如 
    select @RSA_sum=(select sum(per_trans_amt_successful) from [L2SettleDB].[dbo].[l2_sum_transaction] where 字段=@sql1)
    或者你再借一个变量,变量对变量。
    别的暂时理解不了。
      

  2.   

    set @sql1=' where iss_mcht_id=' + @mcht
    set @sqla=
    'select @RSA_sum=(select sum(per_trans_amt_successful) from [L2SettleDB].[dbo].[l2_sum_transaction] where'+@sql1+')'
    exec(@sqla)
     
      

  3.   

    set @sql1=' where iss_mcht_id=' + @mcht
    set @sqla=
    'select @RSA_sum=(select sum(per_trans_amt_successful) from [L2SettleDB].[dbo].[l2_sum_transaction] '+@sql1+')'
    exec(@sqla)--多了一个where你把语句print出来看看是不是你要的查询语句
      

  4.   

    (673 行受影响)
    select @RSA_sum=(select sum(pnt_trans_amt_successful) from [L2SettleDB].[dbo].[l2_sum_transaction] where iss_mcht_id='002245110000001')
    消息 8152,级别 16,状态 10,过程 reader_proc,第 127 行
    将截断字符串或二进制数据。
    语句已终止。这句哪里错了,直接执行没错
      

  5.   


    set @sql2='select @RSA_sum=(select sum(pnt_trans_amt_successful) from [L2SettleDB].[dbo].[l2_sum_transaction]'+@sql1+'), @raing=(select sum(pnt_trans_num_successful) from [L2SettleDB].[dbo].[l2_sum_transaction]'+@sql1+')'
        exec(@sql2)这句报必须声明标量变量"@RSA_sum"
    拼接后的语句是这样的,哪里错了select @RSA_sum=(select sum(pnt_trans_amt_successful) from [L2SettleDB].[dbo].[l2_sum_transaction] where iss_mcht_id='002245110000001'), @raing=(select sum(pnt_trans_num_successful) from [L2SettleDB].[dbo].[l2_sum_transaction] where iss_mcht_id='002245110000001')
      

  6.   


    你的declare 这个变量,你有么??
      

  7.   


    @dt datetime,
    @day int,
    @mcht varchar(15),
    @sett varchar(8),
    @settle_mode varchar(1),
    @mcht_role_type varchar(3),
    @raing_sum float output,
    @PER_sum float output,
    @raing int output,
    @RSA_sum float output已经声明了,再次用declare声明不允许
      

  8.   

    上边的问题都解决了,绕过去的,又有新问题了,在存储过程中,怎样一次把查询结果全部返回select @Recordcount=(select COUNT(*) from #t)
    if @Recordcount-(@CurrPage-1)*30 < 30 
      set @steps=@Recordcount-1
    else
      set @steps=(@CurrPage-1)*30+29
    while ((@CurrPage-1)*30<=@steps)一次怎样把查询的30条语句全部返回