오라클에서 insert용 프로시저를 만들었는데 실행이 안됩니다... 0 2 2,471

by 준일정 [PL/SQL] 오라클 프로시 [2023.06.29 11:22:42]


제목 없음.png (4,428Bytes)

CREATE OR REPLACE PROCEDURE EXAMPLE.ADDPLEMP(
  P_ENAME IN EMP.ENAME%TYPE,
  P_JOB IN EMP.JOB%TYPE
)
IS
  PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
  -- 예외 처리 시작
  BEGIN
    INSERT INTO EMP(EMPNO, ENAME, JOB)
    VALUES((SELECT NVL(MAX(EMPNO), 0) + 1 FROM EMP), P_ENAME, P_JOB);
    
    -- 예외가 발생하지 않았을 때 실행될 코드
    DBMS_OUTPUT.PUT_LINE('HELLO');
    
    COMMIT; -- AUTONOMOUS_TRANSACTION 프로시저는 명시적으로 커밋해야 합니다.
  EXCEPTION
    WHEN OTHERS THEN
      -- 예외 처리를 위한 코드
      -- 예외 처리 작업을 수행하거나 예외를 다시 발생시킬 수 있습니다.
      -- 예를 들어, 오류 메시지를 출력하거나 로그를 기록할 수 있습니다.
      DBMS_OUTPUT.PUT_LINE('Error: ' || SQLCODE || ' - ' || SQLERRM);
      ROLLBACK; -- 예외 발생 시 롤백하여 변경 사항을 취소합니다.
  END;
  -- 예외 처리 종료
END ADDPLEMP;

디비버로 실행하면 
update rows가 -1로 뜹니다..

 

어떻게 해야 하나요?

 

by 마농 [2023.06.29 13:16:39]

혹시 CALL 하신 건가요? CALL 이 아닌 듯 합니다.


by 마농 [2023.06.29 14:14:23]

Oracle 공식 툴인 sqlplus 나 sqldeveloper 에서는 EXEC 사용 가능합니다.
DBeaver 에서 EXEC 사용이 가능할지는 사용 안해봐서 모르겠네요.
EXEC 가 안된다면 다음과 같이 Begin ~ end 로 실행해 보세요.
 

BEGIN
    프로시저명(인수1, 인수2);
END;
/

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입