PLS-00363: expression cannot be used as an assignment target 오류는 해석을 해보자면 '표현식을 할당 대상으로 사용할 수 없습니다.'일 것입니다. PLS-00363 오류는 프로시저 또는 펑션을 호출하는 것과 연관이 있으며, PL/SQL에서의 파라미터 모드와 관련이 깊습니다. 오라클 파라미터 모드는 IN, OUT, 그리고 IN OUT이 있으며 해당 내용은 앞에 있는 링크를 참고해 주십시오. 😊
다음과 같이 PLS-00363 오류가 발생하는 예제를 살펴보고, 어떻게 해결할 수 있는지 그 방법에 대해 알아보도록 하겠습니다.
프로시저 (펑션)
프로시저의 내용은 다음과 같이 매우 간단하며, 특이사항은 파라미터 모드를 모두 보여드리고 있습니다.
- 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);과 같이 할당할 수 있는 변수를 선언하여 해결할 수 있습니다.