DB2 SQL 如何使用 GET DIAGNOSTICS 获取最后执行的 SQL-Statement?

DB2 SQL How to get the last executed SQL-Statement with GET DIAGNOSTICS?

我想在 IBM i 上使用 SQLSTATE 和变量文本调用 RPG 中的过程。

getSQLMessage(SQLSTT: text)

变量文本应该是过程调用前最后执行的 sql 语句。 有机会这样弄吗:

EXEC SQL GET DIAGNOSTICS CONDITION 1 :text = last executed sql statement

或者有人知道我的问题的另一种解决方案?

非常感谢!

您不能使用 GET DIAGNOSTICS,但您可以先获取 JobLog

DSPJOBLOG OUTPUT(*OUTFILE) OUTFILE(QTEMP/ERR_LOG)

然后得到最后一个SQL错误:

Select Qmhmf, 
       Qmhmid, 
       Qmhmdt                                  
  From Qtemp.Err_Log                                         
 Where Qmhsev >= 20                                           
   And Substr(Qmhmid, 1, 3) In ('CPA' , 'CPD' , 'CPF' , 'SQL')
Order By Rrn(Err_log) Desc                                   
Fetch First 1 Rows Only