我正在运行 RPGLE/DB2 SQL,并希望获取 SQLSTT 错误描述以发送回用户或开发人员,以更好地描述发生的情况。现在我们收到错误后必须google一下SQLSTT描述。
这似乎是我应该能够从某个地方查询的东西,但我找不到解决方案。
PSTMT='create or replace alias QTEMP.TheirIIM for '
+%trim(xOtherSys)+'IIM';
exec sql execute immediate :PSTMT;
@SQLERR(SQLSTT:'ALIAS' :%trim(xOtherSys)+'IIM');
Dcl-proc @SQLERR;
Dcl-pi @SQLERR IND;
SQLSTATE CHAR(5) const;
Action CHAR(20) const;
File CHAR(20) const;
End-pi;
Select;
When ACTION = 'ALIAS'; // Create Alias failed
** If SQLSTT > '03000';**
Subject = %Trim(DFTLIB) + ' ' +
'INTCRTORD Pgm Error: Create Alias failed. ';
Message = %Trim(ACTION) +
': CREATE ALIAS for '+ %Trim(File) +
' statement failed with SQLSTT:'+SQLSTT+
'\n RUN ABORTED!';
$Error = *ON;
ENDIF;
我想实际检索 SQLSTT 的含义并将其在我的消息中发回。
最佳答案
您还可以使用 sql 函数获取完整的错误消息:
get diagnostics
MESSAGE-TEXT 包含详细的错误消息:
DCL-S DataText VARCHAR(200);
Exec SQL
prepare c1 from :sqlw ;
if (SQLCOD < 0);
Exec SQL GET DIAGNOSTICS EXCEPTION 1
: DataText = MESSAGE_TEXT ;
snd-msg DataText;
ENDIF;
请参阅 IBM 文档 GET DIAGNOSTICS
关于db2 - 有没有办法获取 RPGLE/DB2 SQL 中的 SQLSTT 错误描述以获得更多信息性错误消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76334287/