2017-12-13 1 views
0

모든 절차를 Oracle에서 DB2 데이터베이스로 마이그레이션해야합니다. 알고 싶습니다, 어떻게해야합니까 구문이 내부에 있습니다.은 오라클과 동일합니다. 오라클에서 사용IF SET Oracle에서 DB2로

변수를하고있다가 ps_iPkCooperativa이며 0

오라클 코드 받고있다 :

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

가 어떻게 DB2에서이 작업을 수행합니까?

답변

0

당신은 DB2에 이러한 변환을 할 수 있습니다 : 이름에서 알 수 있듯이

ATOMIC 복합 문으로 생각 될 수

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; 
    [email protected] 

단수 전체 경우 처리되지 않은 오류 조건이 발생하면 그 시점까지 실행 된 모든 명령문은 으로 간주되어 실패합니다. 따라서 롤백됩니다. ATOMIC 복합 문을 다른 내에서 중첩시킬 수 없습니다. ATOMIC 복합 문.

또한 SAVEPOINT에게의를 사용하거나 명시가 ATOMIC 복합 명령문 내에서 s 또는 롤백 COMMIT 발행 할 수 없습니다.

COMMIT 주, ROLLBACK, 세이브 포인트ATOMIC 복합 명령문이 원자 복합 명령문 내에서 허용되지 않습니다 중첩되어.

+0

Barbaros Ozhan, 위의 쿼리를 수행했지만 DB2에서 실행하려고하면 할 수없는 것을 보여줍니다. \t'GPRSD001.COOP FROM ps_iPkCooperativa INTO \t \t CCOOP 을 선택; SIGNAL SQLSTATE '02000' \t SET ps_iPkCooperativa = 0; ' – Luiz

+0

'의 세미콜론 끝 부분을 넣어야한다고 알려줍니다. – Luiz

+0

@ 루이스 예, 맞습니다. 죄송합니다. SET MESSAGE_TEXT = 'No Data Found'; 부분을 추가했습니다. –

관련 문제