我有这个在oracle 10g中运行的查询:
sMemberId := bertlv.GET_OW_TAG_VALUE(F0, 'D5', '');
stnd.process_message( stnd.Information ,'sMemberId = ' ||sMemberId);
if sMemberId = '147' then
sBankToName := 'BMI';
else
--everything works until this line below:
select trim(max(upper(name)))
into sBankToName
from BIN_TABLE
where amnd_state = 'A'
and member_id = sMemberId;
stnd.process_message( stnd.Information ,'sBankToName = ' ||sBankToName);
end if;
If sBankToName is null or sBankToName = '' then
RetCode := 201;
ErrMsg := 'CUST_ACQ_TO_ISS: Destination Bank Not Found (' || trim(sMemberId) || ')';
return;
end if;
当我选择名称并将值输入变量sBankToName时,所有工作都在行之前。此变量为NULL,因此它返回了我设置的错误消息。但是,它不应该为NULL,因为条件是正确的。有人可以给我一些关于这个问题的意见吗? 提前谢谢。
答案 0 :(得分:0)
首先通过dbms_output.put_line在select查询之后打印它,然后在stnd.process_message行之后打印它,它是真正的null或者是什么值,这里是示例:
select trim(max(upper(name)))
into sBankToName
from BIN_TABLE
where amnd_state = 'A'
and member_id = sMemberId;
dbms_output.put_line(sBankToName);
stnd.process_message( stnd.Information ,'sBankToName = ' ||sBankToName);
end if;
dbms_output.put_line(sBankToName);
然后你就可以轻松调试了。