如何在Oracle Pro*C中显示包含主机变量值的SQL语句?

max*_*zig 5 c sql oracle binding

在Pro*C代码中,您可以通过sqlgls()(或甚至SQLStmtGetText())获取最后执行的SQL语句.

这对于日志记录非常有用 - 特别是对于动态语句.

但是这些SQLLIB函数返回的SQL语句只包含绑定标记(例如:b1,:b2......).不包括使用的主机变量的实际值.

因此,我有以下问题:如何显示包含主机变量值的最后一个SQL语句?

否则我必须在打印返回的字符串后手动打印所有使用的变量sqlgls().这根本不比在不使用的情况下打印SQL语句更方便sqlgls.

例如,而不是

INSERT INTO MYTABLE VALUES (:b1, :b2, :b3);
Run Code Online (Sandbox Code Playgroud)

我要打印:

INSERT INTO MYTABLE VALUES ("hello", "world", 12);
Run Code Online (Sandbox Code Playgroud)

(除了日志记录之外,还可以更容易地将其"复制"到SQL-shell中 - 即用于测试)