DB2 SQL如何使用GET DIAGNOSTICS获得最后执行的SQL语句?

时间:2019-07-04 14:17:38

标签: sql db2 ibm-midrange db2-400 rpgle

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

getSQLMessage(SQLSTT: text)

变量文本应该是过程调用之前最后执行的sql语句。 是否有机会得到这样的东西:

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

或者也许有人为我的问题提供了另一种解决方案?

非常感谢!

1 个答案:

答案 0 :(得分:2)

您不能使用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