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处,怎样加
你是需要给WHERE 加条件吧,找到对应的字段然后等于就可以了的吧。 如 select @RSA_sum=(select sum(per_trans_amt_successful) from [L2SettleDB].[dbo].[l2_sum_transaction] where 字段=@sql1) 或者你再借一个变量,变量对变量。 别的暂时理解不了。
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)
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出来看看是不是你要的查询语句
(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 行 将截断字符串或二进制数据。 语句已终止。这句哪里错了,直接执行没错
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')
上边的问题都解决了,绕过去的,又有新问题了,在存储过程中,怎样一次把查询结果全部返回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条语句全部返回
如
select @RSA_sum=(select sum(per_trans_amt_successful) from [L2SettleDB].[dbo].[l2_sum_transaction] where 字段=@sql1)
或者你再借一个变量,变量对变量。
别的暂时理解不了。
set @sqla=
'select @RSA_sum=(select sum(per_trans_amt_successful) from [L2SettleDB].[dbo].[l2_sum_transaction] where'+@sql1+')'
exec(@sqla)
set @sqla=
'select @RSA_sum=(select sum(per_trans_amt_successful) from [L2SettleDB].[dbo].[l2_sum_transaction] '+@sql1+')'
exec(@sqla)--多了一个where你把语句print出来看看是不是你要的查询语句
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 行
将截断字符串或二进制数据。
语句已终止。这句哪里错了,直接执行没错
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')
你的declare 这个变量,你有么??
@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声明不允许
if @Recordcount-(@CurrPage-1)*30 < 30
set @steps=@Recordcount-1
else
set @steps=(@CurrPage-1)*30+29
while ((@CurrPage-1)*30<=@steps)一次怎样把查询的30条语句全部返回