0

我必须将所有过程从 Oracle 迁移到 DB2 数据库。我想知道,当 Oracle 工作时,我如何在IF内执行SET语法。

在 Oracle 中使用的变量是ps_iPkCooperativa并且正在接收 0。

甲骨文代码:

BEGIN
    SELECT CCOOP
      INTO ps_iPkCooperativa
      FROM COOP
    EXCEPTION
        WHEN NO_DATA_FOUND
        THEN  ps_iPkCooperativa := 0;
END; 

我如何在 DB2 中做到这一点?

4

1 回答 1

0

您可以对 db2 进行这样的转换:

    BEGIN ATOMIC
     DECLARE ps_iPkCooperativa INT;

        SELECT CCOOP
          INTO ps_iPkCooperativa
          FROM COOP;         
     SIGNAL SQLSTATE '02000' -- means no_data_found
          SET MESSAGE_TEXT='No Data Found ';
          SET ps_iPkCooperativa = 0;
    END@  

在哪里

ATOMIC复合语句,顾名思义,可以被认为是一个单一的整体——如果其中出现任何未处理的错误条件,那么到该点之前执行的所有语句也被视为失败,因此被回滚. ATOMIC复合语句不能嵌套在其他ATOMIC 复合语句中。

此外,您不能在 ATOMIC 复合语句中使用SAVEPOINT或发出显式COMMIT或 ROLLBACK。

笔记

COMMITROLLBACKSAVEPOINTS和嵌套的ATOMIC复合语句不允许在 ATOMIC 复合语句中。

于 2017-12-13T22:39:04.160 回答