IF SET帮助Oracle到DB2

问题描述 投票:0回答:1

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

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

Oracle代码:

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

我如何在DB2中执行此操作?

stored-procedures db2 sql-pl
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。

注意

ATOMIC复合语句中不允许使用COMMIT,ROLLBACK,SAVEPOINTS和嵌套的ATOMIC复合语句。

© www.soinside.com 2019 - 2024. All rights reserved.