我想使用SQLSTATE和可变文本在IBM i上的RPG中调用过程。
getSQLMessage(SQLSTT: text)
变量文本应该是过程调用之前最后执行的sql语句。 是否有机会得到这样的东西:
EXEC SQL GET DIAGNOSTICS CONDITION 1 :text = last executed sql statement
或者也许有人为我的问题提供了另一种解决方案?
非常感谢!
答案 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