PLS-00371: 에 대해 최대 하나의 선언만 허용됩니다. 오류는 코드에서 보는 바와 같이 PL/SQL 구문을 작성하다가 마주할 수 있는 오류랍니다. (PL/SQL 관련 오류코드는 PLS 라는 접두어가 많은 편입니다)
다음과 같이 실제로 동일한 이름을 가지고 있는 변수를 선언하는 것은 가능한 일입니다. 다만 이 부분은 잠재적으로 오늘의 주제, PLS-00371 오류 가능성을 내포하고 있습니다.
DECLARE
DECLARATION VARCHAR2 (1);
DECLARATION VARCHAR2 (1);
BEGIN
NULL;
END;
/
PL/SQL procedure successfully completed.
첫 번째 코드에서는 변수에 어떠한 값을 할당하지 않고 단순히 변수를 선언한 후 NULL; 문장을 통해 종료하였습니다. 이 경우에는 선언된 변수가 하나도 사용되지 않고 있으며 문제가 되지 않습니다.
위의 코드처럼 변수에 해당 할당이 없으면 정상적으로 실행이 되는 경우가 있는데요, 다음과 같이 변수를 할당해보겠습니다.
DECLARE
DECLARATION VARCHAR2 (1);
DECLARATION VARCHAR2 (1);
BEGIN
DECLARATION := '0';
END;
/
PLS-00371: at most one declaration for 'DECLARATION' is permitted
PL/SQL: Statement ignored
두 번째 코드에서는 변수에 값을 할당하기 위해 DECLARATION := '0'; 문장을 추가해보았습니다. 그러나 같은 이름의 변수가 선언되어 있으므로, 동일한 이름을 가진 변수를 두 번 선언하는 것과 같은 효과가 나타납니다. 그러므로 할당을 하는 순간 바로 오류가 발생합니다.
예제자료는 매우 짧기 때문에 직관적으로 쉽게 볼 수도 있는데, 실제코드는 이렇게 짧지가 않죠? 동일한 이름이 없는가에 대해 중점적으로 살펴보면 해결할 수 있을 것입니다. 해결 방법은 변수 이름을 고유하게 만드는 것입니다. 변수 이름을 변경하여 코드를 수정해 주세요.
DECLARE
DECLARATION1 VARCHAR2 (1);
DECLARATION2 VARCHAR2 (1);
BEGIN
DECLARATION1 := '0';
END;
/
PL/SQL procedure successfully completed.