PLS-00215: String length constraints must be in range (1 .. 32767)

PLS-00215: String length constraints must be in range (1 .. 32767)

PLS-00215: String length constraints must be in range (1 .. 32767) 오류는 블록의 선언부에 정의한 VARCHAR2와 같은 String 변수에 대해 길이를 설정하지 않아서 발생합니다. 해결 방법에 대해 알아보도록 하겠습니다~

다음은 PLS-00215: String length constraints must be in range (1 .. 32767) 예외가 발생하는 예제 자료입니다.

DECLARE
    TABLENAME   VARCHAR2;
 BEGIN
    EXECUTE IMMEDIATE
       'INSERT INTO USER_NAME.TABLE_NAME (COLUMN_NAME) VALUES (:1) '
       USING 'BEOMSANG';
 END;
 /

ERROR at line 2:
ORA-06550: line 2, column 16:
PLS-00215: String length constraints must be in range (1 .. 32767)

오류를 해결하려면 안내와 같이 1에서 32767에 해당하는 길이만큼 문자열 길이를 설정해 주세요.

다음은 길이를 추가하여 해결한 결과입니다.

DECLARE
    TABLENAME   VARCHAR2 (100);
 BEGIN
    EXECUTE IMMEDIATE
       'INSERT INTO USER_NAME.TABLE_NAME (COLUMN_NAME) VALUES (:1) '
       USING 'BEOMSANG';
 END;
 /

PL/SQL procedure successfully completed.

특정 테이블의 컬럼과 동일하게 선언이 되어야 하면, 해당 타입을 선언하는 것도 좋은 방법입니다. 다음은 테이블명 변수에 대해 딕셔너리를 참고하여 데이터 값을 선언하였습니다. 참고로, 오라클 데이터베이스 테이블 이름은 최대 30바이트이며 해당 컬럼 또한 30바이트입니다.

DECLARE
    TABLENAME   ALL_TABLES.TABLE_NAME%TYPE;
 BEGIN
    EXECUTE IMMEDIATE
       'INSERT INTO USER_NAME.TABLE_NAME (COLUMN_NAME) VALUES (:1) '
       USING 'BEOMSANG';
 END;
 /

PL/SQL procedure successfully completed.

댓글