1. 오라클 PL_SQL 기본 틀
DECLARE OR
CREATE OR REPLACE PROCEDURE PL_SQL명
...변수 선언
BEGIN
... 내용
--내용안에 에러처리(try~catch 처럼 처리 할수 있다)
BEGIN
....내용
EXCEPTION WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('V_STR :: '||SQLCODE||'-'||SQLERRM);
END;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('ERROR');
DBMS_OUTPUT.PUT_LINE('V_STR :: '||SQLCODE||'-'||SQLERRM);
END;
2. 오라클 반복 FOR ..IN LOOP 기본 틀
FOR CUR IN (
SELECT 문
)
LOOP
CUR.EMP //이런식으로 select 한 내용 접근가능
END LOOP;
SET SERVEROUTPUT ON; //로그찍게 해준다
DECLARE
I_RCV_NO VARCHAR2(100) := '';
I_FN_NO VARCHAR2(100) := '';
O_RSLT_CD VARCHAR2(100) := '';
O_RSLT_MSG VARCHAR2(100) := '';
V_MSGCNT NUMBER := 0;
V_RSLT_CD VARCHAR2(2) ;
V_RSLT_MSG VARCHAR2(4000) ;
ERROR EXCEPTION;
TYPE TY_NEST IS TABLE OF ARCHAR2(5);
NEST Y_NEST;
BEGIN
NEST := TY_NEST('192',193',194');
FOR RE_LIST IN(
SELECT 'P' SB_NM, '0000' SB_TNO FROM DUAL
UNION ALL
SELECT 'L' SB_NM, '0001' SB_TNO FROM DUAL
)
LOOP
I_RCV_NO := RE_LIST.SB_NM;
FOR I IN NEST.FIRST..NEST.LAST
LOOP
I_FN_NO := NEST(I);
BEGIN
DBMS_OUTPUT.PUT_LINE('WWW');
EXCEPTION
WHEN OTHERS THEN
V_RSLT_CD := 'E';
V_RSLT_MSG := 'ERROR_'||SQLERRM;
RAISE ERROR; //바깥 exception으로 간다
END;
END LOOP;
END LOOP;
EXCEPTION
WHEN ERROR THEN
O_RSLT_CD := V_RSLT_CD;
O_RSLT_MSG := V_RSLT_MSG;
DBMS_OUTPUT.PUT_LINE('ERROR');
DBMS_OUTPUT.PUT_LINE(O_RSLT_CD);
WHEN OTHERS THEN
O_RSLT_CD := V_RSLT_CD;
O_RSLT_MSG := V_RSLT_MSG;
DBMS_OUTPUT.PUT_LINE('OTHER ERROR');
DBMS_OUTPUT.PUT_LINE(O_RSLT_CD);
END;
'Database > oracle' 카테고리의 다른 글
[oralce] 프로젝트 운영시 쓰는 SQL 기본운영사항 (0) | 2023.04.17 |
---|---|
[oracle] 오라클 스케줄 작업 (0) | 2023.04.17 |
[oracle] 적금 월복리 (0) | 2023.04.17 |
[oracle] 계산식 기본1 (EXP, LN) (0) | 2023.04.17 |
[oracle] 적금등의 날짜 계산 시 (0) | 2023.04.17 |