在我的esql程序中,当sql失败并生成异常时,我想打印生成异常的SQL。为此,我需要了解如何获取以前执行的SQL。我正在运行informix 11.5。 我尝试了以下但没有任何作用
select * from sysmaster:sysconblock where cbl_sessionid in (select dbinfo('SessionId') from sysmaster:syssqlstat);
SELECT scs_sqlstatement FROM sysmaster:syssqlcurses WHERE scs_sessionid in (select dbinfo('SessionId') from sysmaster:syssqlstat);
所有这些都得到了自己的sql。例如,如果我运行select * from sysmaster:sysconblock
,它会在上次执行时显示“select * from sysmaster:sysconblock”。有没有办法在informix中获得这个?是否[可以在ESQL程序上执行此操作?
非常感谢
答案 0 :(得分:1)
您处于正确的轨道上,但如果您使用相同的连接来运行这些SQL语句,那么它们的成功执行当然会消除前一个语句中的信息。 (事实上,它几乎是heisenbug的一个完美例子。)
您需要做的是创建与数据库的第二个连接,并使用它来查询失败的主连接的sysmaster内容。
希望这有帮助。