当前位置: 技术问答>linux和unix
执行PROC出现出现灵异事件
来源: 互联网 发布时间:2016-10-23
本文导语: EXEC SQL DECLARE C_9903_2 CURSOR for SELECT nvl(sum(transamt),0), nvl(sum(settle_month_fee),0), nvl(sum(commfee),0), nvl(sum(trans_account),0), batch_number FROM e_fm_corp_sttl_mx ...
EXEC SQL DECLARE C_9903_2 CURSOR for
SELECT nvl(sum(transamt),0),
nvl(sum(settle_month_fee),0),
nvl(sum(commfee),0),
nvl(sum(trans_account),0),
batch_number
FROM e_fm_corp_sttl_mx
WHERE TRIM(corp_id) =TRIM('1234') and
nvl(if_settlement,'0') ='0'
and txn_date = TRIM('20101130')
and trans_type ='01'
GROUP BY batch_number;
……
EXEC SQL OPEN C_9903_2;
EXEC SQL
SELECT count(1) into :Temp
FROM e_fm_corp_sttl_mx
WHERE TRIM(corp_id) =TRIM('1234') and
nvl(if_settlement,'0') ='0'
and txn_date = TRIM('20101130')
and trans_type ='01';
if(sqlca.sqlcode !=0)
{
printf("sqlcode=[%d],sqlerr=[%s]n",sqlca.sqlcode,sqlca.sqlerrm.sqlerrmc);
}
printf("============================================n");
printf("CorpId=[%s],Acctdate=[%s],RowCnt=[%d]n",CorpId,Acctdate,Temp);
while(1)
{
memset(BatchNumber,0x00,sizeof(BatchNumber));
EXEC SQL FETCH C_9903_2 INTO :Transamt,:SettleMonthFee,:Commfee,:TransAccount,:BatchNumber;
if (sqlca.sqlcode == 1403)
{
printf("sqlcode=[%d],sqlerr=[%s]n",sqlca.sqlcode,sqlca.sqlerrm.sqlerrmc);
break;
}
}
在FETCH 之前特意查了下游标中的数据条数
temp =2
进入 WHILE(1)后fetch 就报1403未找到
明明查有记录。。
解决不了。。
大家看看有什么问题。
|
其实楼主还是需要好好检查下自己的代码,
while(1)
{
memset(BatchNumber,0x00,sizeof(BatchNumber));
EXEC SQL FETCH C_9903_2 INTO :Transamt,:SettleMonthFee,:Commfee,:TransAccount,:BatchNumber;
printf("BatchNumber =%sn,BatchNumber"); if (sqlca.sqlcode == 1403)
{
printf("sqlcode=[%d],sqlerr=[%s]n",sqlca.sqlcode,sqlca.sqlerrm.sqlerrmc);
break;
}
}
|
上面是两次执行的结果?
内容不一样啊,是不是有别人在同时操作数据库??
另外,你的查询条件WHERE TRIM(corp_id) =TRIM('1234')
怎么结果中有qw、corp1 ..
内容不一样啊,是不是有别人在同时操作数据库??
另外,你的查询条件WHERE TRIM(corp_id) =TRIM('1234')
怎么结果中有qw、corp1 ..
|
不懂帮忙顶顶,在不插入,楼主都没法回帖了。
|
SELECT count(1) into :Temp