DB (데이터베이스)/Oracle (오라클)

[Oracle] oracle PLS-00201 : identifier must be declared 원인, 해결

뜽배 2024. 5. 27. 16:17
728x90
반응형

PLS-00201 : identifier 'A' must be declared 라는 애러메시지 해결방안에 대해 알아보자.

 

1. 원인

 

pl/sql에서 변수에 데이터타입에 맞지 않는 데이터를 대입했을 경우에 애러가 발생한다.

 

 

DECLARE
	A VARCHAR2(100);
BEGIN
	A := TEST;
END;

위와 같은 구문에서 애러가 발생한다.

 

이유는

 

A := TEST; 가 아니라 

A := 'TEST'; 라고 작성해야 하기 때문이다.


하지만 sqlplus 에서 이 pl/sql파일을 .sql파일로 저장하고 실행을 할 때 문제가 생긴다.

 

DECLARE
	A VARCHAR2(100);
BEGIN
	A := &1;
END;

만약 .sql파일로 저장을 하고 파라미터를 받아야 할 경우 대부분 위와 같이 작성하여 실수를 저지른다.

이후 sqlplus에서 호출을 한다.

 

SQL> a.sql TEST

이 때 sqlplus 에서 위와 같이 작성하면 PLS-00201애러가 발생한다.

PLS-00201 : identifier 'TEST' must be declared

 

2. 해결방안

 

이 문제를 해결하기 위해서는 2가지 방법이 있다.

 

2-1. 첫 번째 해결방안

파라미터를 넘길 때 홑따옴표(')도 같이 넘긴다.

SQL> a.sql "'TEST'"

위와 같이 홑따옴표(')도 같이 변수에 넘기면 해결할 수 있다.

 

2-2. 두 번째 해결방안

DECLARE
	A VARCHAR2(100);
BEGIN
	A := '&1';
END;

pl/sql블록에 위 처럼 &1 -> '&1' 을 통해 해결가능하다.

 

 

728x90
반응형