CREATE OR REPLACE PROCEDURE update_test
IS
BEGIN
DBMS_OUTPUT.ENABLE;
UPDATE EMP01 A
SET(A.CUST_CODE, A.CUST_CARDNO, A.CUST_CODE_OLD)
= (SELECT B.NEW_CODE, A.CUST_CODE, A.CUST_CODE FROM TEMP_EMP B WHERE A.CUST_CODE = B.CUST_CODE)
WHERE EXISTS (
SELECT 'x' FROM TEMP_EMP B WHERE A.CUST_CODE = B.CUST_CODE
);
COMMIT;
DBMS_OUTPUT.PUT_LINE('데이터 수정 성공');
EXCEPTION
WHEN OTHERS THEN
ROLLBACK;
DBMS_OUTPUT.PUT_LINE('SQL ERROR MESSAGE: ' || SQLERRM);
END update_test;
DB는 오라클 11g이고 질문 드릴것이,
저렇게 만들고 컴파일 하면 PL/SQL프로시저가 생성되는것으로 알고 있습니다.
그 뒤에 EXEC update_test();
실행시키면 update가 되어야 하는데, update 되지 않습니다.
그런데 단순하게 update구문만 떼어내서 실행하면,
UPDATE EMP01 A
SET(A.CUST_CODE, A.CUST_CARDNO, A.CUST_CODE_OLD)
= (SELECT B.NEW_CODE, A.CUST_CODE, A.CUST_CODE FROM TEMP_EMP B WHERE A.CUST_CODE = B.CUST_CODE)
WHERE EXISTS (
SELECT 'x' FROM TEMP_EMP B WHERE A.CUST_CODE = B.CUST_CODE
);
update가 정상적으로 이루어집니다.
누락된 부분이 있어서 실행이 안되나요 ㅠ
혹시 프로시저에서 잘못된 부분이 있다면 가르쳐주시길 바랍니다.