db2 - 有没有办法获取 RPGLE/DB2 SQL 中的 SQLSTT 错误描述以获得更多信息性错误消息?

标签 db2 rpgle

我正在运行 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

detailed examples in Simon's blog

关于db2 - 有没有办法获取 RPGLE/DB2 SQL 中的 SQLSTT 错误描述以获得更多信息性错误消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76334287/

相关文章:

java - HikariCp 无法连接到 DB2 数据库

database - 有没有办法检查 DB2 sql 日志中执行的实际 SQL 操作?,即提取了多少行等?

ibm-midrange - 从 IFS 读取多个文件

sql - 如何将 DB2 SQL 结果表移动到物理文件中?

ibm-midrange - 如何获取活跃服务入口列表?

java - 如何声明和调用从 RPG 获取二维 bye 数组参数的 java 方法?

db2 - 从命令行执行 DB2 命令到远程服务器

bash - 在Linux脚本中,是否可以在同一个进程中执行多个命令?

java - 不支持的字符集异常 : Cp1027 with DB2 JDBC Driver

ibm-midrange - 如何获取程序列表和服务程序已经为特定库绑定(bind)了给定的 RPGLE 模块