PLS-00363: expression cannot be used as an assignment target 해결하는 방법

PLS-00363: expression cannot be used as an assignment target 오류는 해석을 해보자면 '표현식을 할당 대상으로 사용할 수 없습니다.'일 것입니다. PLS-00363 오류는 프로시저 또는 펑션을 호출하는 것과 연관이 있으며, PL/SQL에서의 파라미터 모드와 관련이 깊습니다. 오라클 파라미터 모드는 IN, OUT, 그리고 IN OUT이 있으며 해당 내용은 앞에 있는 링크를 참고해 주십시오. 😊

다음과 같이 PLS-00363 오류가 발생하는 예제를 살펴보고, 어떻게 해결할 수 있는지 그 방법에 대해 알아보도록 하겠습니다.

PLS-00363 expression cannot be used as an assignment target

프로시저 (펑션)

프로시저의 내용은 다음과 같이 매우 간단하며, 특이사항은 파라미터 모드를 모두 보여드리고 있습니다.

  • IN
  • OUT
  • IN OUT

CREATE OR REPLACE PROCEDURE USER_NAME.PROCEDURE_NAME (I    IN     VARCHAR2,
                                                      O       OUT VARCHAR2,
                                                      IO   IN OUT VARCHAR2)
IS
BEGIN
   NULL;
EXCEPTION
   WHEN OTHERS
   THEN
      DBMS_OUTPUT.PUT_LINE (SQLERRM);
END;
/

호출 매개변수 모드

프로시저의 파라미터는 각각 IN, OUT, IN OUT입니다. 이때 PROCEDURE_NAME ('1', '2', '3'); 과 같이 모든 파라미터에 대해 문자열로 호출하는 경우, PLS-00363: expression cannot be used as an assignment target 오류가 발생할 수 있습니다. OUT 파라미터는 할당 대상이 되기 때문입니다.

SET SERVEROUTPUT ON

DECLARE
   D_O    VARCHAR2 (1);
   D_IO   VARCHAR2 (1);
BEGIN
   --PLS-00363: expression cannot be used as an assignment target
   PROCEDURE_NAME ('1', '2', '3');
--   PROCEDURE_NAME ('1', D_O, D_IO);
END;

프로시저를 호출할 때에, PROCEDURE_NAME ('1', D_O, D_IO);과 같이 할당할 수 있는 변수를 선언하여 해결할 수 있습니다.

댓글