gpt4 book ai didi

rpgle - 在 ILE RPG 中检查 sql found 条件的正确方法是什么?

转载 作者:行者123 更新时间:2023-12-04 14:46:55 24 4
gpt4 key购买 nike

在 RPG 中使用嵌入式 SQL 时,您经常会得到一个游标和一个 dow -loop 用于处理结果中的所有行。循环中的条件以某种方式依赖于 SQLCOD和/或 SQLSTT ,SQLRPGLE 程序中的一些全局可用变量?

但是检查这些值的正确方法是什么?有人建议 SQLCOD = 0其他 not (SQLCOD = +100 or SQLSTT = '02000') .一个在所有警告上失败,另一个在某些错误上没有失败,所以我不满足。

为了说明我用一些代码做什么:

Pmain             B
D PI
Dmy_ds E DS extname(SOME_TABLE)
D qualified
/free
exec sql
DECLARE cur CURSOR FOR
SELECT *
FROM some_table;
exec sql
OPEN cur;
exec sql
FETCH cur
INTO :my_ds;
dow sql_found();
exec sql
FETCH cur
INTO :my_ds;
enddo;
exec sql
CLOSE cur;
/end-free
Pmain E


Psql_found B
D PI N
/free
// insert return statement here...
/end-free
Psql_found E

我在这里寻找正确的 return 语句,如果没有错误发生,这将使我遍历所有行,并在发生错误时让我离开。一些体面的方法来检查错误的奖励积分。

最佳答案

SQLSTATE 更好,由 IBM 推荐。

来自 IBM 的信息中心 SQL Messages and Codes Reference: SQLCODE and SQLSTATE concepts

SQLSTATE is the preferred standard return code.



SQLSTATE 是 5 个字符,前两个字节标识 class of conditions .
  • '00' = 不合格成功完成
  • '01' = 警告
  • '02' = 无数据

  • 其他任何事情都是错误。我通常只检查'00'。

    简单的。简单。更便携。

    使用 SQLCODE 通常涉及代码列表,恕我直言,对开发人员不友好。

    示例:

    就个人而言,我通常包括这样的定义和代码:
     D xSQLState@      s               *   inz( %addr(SQLState) )
    D xSQLState ds 5 based(xSQLState@)
    D xSQLState2 2a
    D
    D Success_On_SQL C const('00')
    D Warning_On_SQL C const('01')
    D NoData_On_SQL C const('02')

    然后在任何SQL操作之后,我一般都会检查
       if xSQLState2 <> Success_On_Sql;
    someflag = true;
    endif;

    关于rpgle - 在 ILE RPG 中检查 sql found 条件的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15389830/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com