문자연결 연산자 ||
대입 연산자 :=
문자연결 수식, 대입연산자, cursor
apt_info에 맞게 dong_info name 수정
CREATE OR REPLACE PROCEDURE SCOTT.SET_APT_NAME
IS
V_NAME VARCHAR2(100) DEFAULT '';
V_A_CODE VARCHAR2(100) DEFAULT '';
V_D_CODE VARCHAR2(100) DEFAULT '';
CURSOR V_LIST
IS
SELECT D.APT_CODE L_A_CODE, D.DONG_CODE L_D_CODE, A.NAME L_A_NAME
FROM DONG_INFO D, APT_INFO A
WHERE D.APT_CODE = A.APT_CODE;
BEGIN
FOR V_FOR IN V_LIST LOOP
V_A_CODE := V_FOR.L_A_CODE;
V_D_CODE := V_FOR.L_D_CODE;
V_NAME := V_FOR.L_A_NAME||V_D_CODE||'동';
UPDATE DONG_INFO
SET NAME = V_NAME
WHERE DONG_CODE = V_FOR.L_D_CODE;
END LOOP;
END;
/
cursor, for-loop exit, exception
CREATE OR REPLACE PROCEDURE MEDI.OP_BAS_LOAD_ZIP_CODE1
(I_ZIP_NAME IN VARCHAR2,
IO_ZIP_CODE IN OUT VARCHAR2,
IO_ZIP_TONGGYE IN OUT VARCHAR2,
IO_ERR IN OUT VARCHAR2) IS
CURSOR C1 IS SELECT ZIP_CODE1, ZIP_TONGGYE FROM BAS0120
WHERE ZIP_NAME1 = I_ZIP_NAME;
BEGIN
IO_ERR := '1';
FOR A1 IN C1 LOOP
IO_ERR := '0';
IO_ZIP_CODE := A1.ZIP_CODE1;
IO_ZIP_TONGGYE := A1.ZIP_TONGGYE;
EXIT;
END LOOP;
EXCEPTION
WHEN DUP_VAL_ON_INDEX THEN
IO_ERR := 'D';
WHEN VALUE_ERROR THEN
IO_ERR := 'V';
WHEN TOO_MANY_ROWS THEN
IO_ERR := 'T';
WHEN INVALID_CURSOR THEN
IO_ERR := 'I';
WHEN OTHERS THEN
IO_ERR := 'Z';
END;
PROCEDURE, CURSOR, INSERT FOR LOOP
TMP_UPLOAD_COL10_TBL 에 있는 COR1 과 COR2에 대한 데이터를
BJD_INFO에 DO, SI, GU, DONG, RI 에 맞게 삽입하기
REGEXP_SUBSTR(자르고싶은문자, 자를문자, 자를위치, 자를위치에서 첫번째 자를문자가 해당하는 위치);
EX) REGEXP_SUBSTR(COL2, '[^ ]+', 1, 1) C2_1,
CREATE OR REPLACE PROCEDURE SCOTT.SET_BJD_INFO
IS
CURSOR LIST_1
IS
SELECT
COL1 C1,
COL2 C2
FROM TMP_UPLOAD_COL10_TBL
WHERE COL1 LIKE '____000000%';
CURSOR LIST_2
IS
SELECT
COL1 C1,
REGEXP_SUBSTR(COL2, '[^ ]+', 1, 1) C2_1,
REGEXP_SUBSTR(COL2, '[^ ]+', 1, 2) C2_2
FROM TMP_UPLOAD_COL10_TBL
WHERE COL1 LIKE '____000000%'
AND COL1 NOT LIKE '__00000000%';
CURSOR LIST_3
IS
SELECT
COL1 C1,
REGEXP_SUBSTR(COL2, '[^ ]+', 1, 1) C2_1,
REGEXP_SUBSTR(COL2, '[^ ]+', 1, 2) C2_2,
REGEXP_SUBSTR(COL2, '[^ ]+', 1, 3) C2_3
FROM TMP_UPLOAD_COL10_TBL
WHERE COL1 LIKE '______0000%'
AND COL1 NOT LIKE '____000000%'
AND COL1 NOT LIKE '__00000000%';
CURSOR LIST_4
IS
SELECT
COL1 C1,
REGEXP_SUBSTR(COL2, '[^ ]+', 1, 1) C2_1,
REGEXP_SUBSTR(COL2, '[^ ]+', 1, 2) C2_2,
REGEXP_SUBSTR(COL2, '[^ ]+', 1, 3) C2_3,
REGEXP_SUBSTR(COL2, '[^ ]+', 1, 4) C2_4
FROM TMP_UPLOAD_COL10_TBL
WHERE COL1 LIKE '________00%'
AND COL1 NOT LIKE '______0000%'
AND COL1 NOT LIKE '____000000%'
AND COL1 NOT LIKE '__00000000%';
CURSOR LIST_5
IS
SELECT
COL1 C1,
REGEXP_SUBSTR(COL2, '[^ ]+', 1, 1) C2_1,
REGEXP_SUBSTR(COL2, '[^ ]+', 1, 2) C2_2,
REGEXP_SUBSTR(COL2, '[^ ]+', 1, 3) C2_3,
REGEXP_SUBSTR(COL2, '[^ ]+', 1, 4) C2_4,
REGEXP_SUBSTR(COL2, '[^ ]+', 1, 5) C2_5
FROM TMP_UPLOAD_COL10_TBL
WHERE COL1 LIKE '__________%'
AND COL1 NOT LIKE '________00%'
AND COL1 NOT LIKE '______0000%'
AND COL1 NOT LIKE '____000000%'
AND COL1 NOT LIKE '__00000000%';
BEGIN
FOR LIST_DO IN LIST_1 LOOP
INSERT INTO BJD_INFO VALUES (LIST_DO.C1, LIST_DO.C2, '', '', '', '');
END LOOP;
FOR LIST_SI IN LIST_2 LOOP
INSERT INTO BJD_INFO VALUES (LIST_SI.C1, LIST_SI.C2_1, LIST_SI.C2_2, '', '', '');
END LOOP;
FOR LIST_GU IN LIST_3 LOOP
INSERT INTO BJD_INFO VALUES (LIST_GU.C1, LIST_GU.C2_1, LIST_GU.C2_2, LIST_GU.C2_3, '', '');
END LOOP;
FOR LIST_DONG IN LIST_4 LOOP
INSERT INTO BJD_INFO VALUES (LIST_DONG.C1, LIST_DONG.C2_1, LIST_DONG.C2_2, LIST_DONG.C2_3, LIST_DONG.C2_4, '');
END LOOP;
FOR LIST_RI IN LIST_5 LOOP
INSERT INTO BJD_INFO VALUES (LIST_RI.C1, LIST_RI.C2_1, LIST_RI.C2_2, LIST_RI.C2_3, LIST_RI.C2_4, LIST_RI.C2_5);
END LOOP;
END SET_BJD_INFO;
/
'Study > Oracle' 카테고리의 다른 글
[Oracle] DB 링크, 시퀀스, 트리거 (0) | 2019.05.20 |
---|---|
[Oracle] GRANT 권한부여 (0) | 2019.05.20 |
[oracle] CREATE, PROCEDURE (0) | 2019.05.14 |
[oracle] .sql -> .sqlite 저장 (0) | 2019.05.14 |
[oracle] 소개 및 설치 (0) | 2019.05.14 |