gpt4 book ai didi

informix - 如何在informix中获取之前执行过的sql

转载 作者:行者123 更新时间:2023-12-02 03:53:27 24 4
gpt4 key购买 nike

在我的 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 程序上执行吗?

非常感谢

最佳答案

您走在正确的轨道上,但是如果您使用相同的连接来运行这些 SQL 语句,那么它们的成功执行当然会抹掉先前语句中的信息。 (事实上​​ ,它几乎是 heisenbug 的完美示例。)

您需要做的是创建与数据库的第二个连接,并使用它来查询失败的主连接的 sysmaster 内容。

  1. 连接数据库进行主程序处理。
  2. 识别 SessionID 并捕获到变量。
  3. 使用新连接连接到 sysmaster 数据库。
  4. 开始处理主连接。
  5. 当主连接处理失败报错时,使用以SessionID为参数的副连接获取SQL等。

希望对您有所帮助。

关于informix - 如何在informix中获取之前执行过的sql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13612349/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com