SW/Database / / 2025. 2. 12. 17:37

ORA-06504: PL/SQL 오류 - 행 유형 불일치 / 원인과 해결 방법

반응형

ORA-06504: PL/SQL 오류 - 행 유형 불일치

ORA-06504 오류는 PL/SQL 블록에서 반환되는 행 유형이 선언된 변수의 유형과 일치하지 않을 때 발생합니다.

 

 

ORA-06504: PL/SQL 오류 - 행 유형 불일치 / 원인과 해결 방법

 

 

오류 원인

ORA-06504 오류는 일반적으로 PL/SQL에서 행 유형이 일치하지 않을 때 발생하며, 다음과 같은 원인이 있을 수 있습니다:

  1. PL/SQL 변수와 SELECT 문의 반환 유형 불일치: - 선언된 레코드 변수와 실제 반환되는 행의 데이터 유형이 다를 경우 발생.
  2. 커서 변수의 ROWTYPE이 변경됨: - %ROWTYPE 또는 %TYPE을 사용하는 경우, 테이블 구조가 변경되면 불일치가 발생할 수 있음.
  3. 컬렉션 또는 레코드 구조 불일치: - PL/SQL에서 사용자 정의 컬렉션 또는 레코드를 사용할 때 데이터 구조가 일치하지 않을 경우.
  4. 패키지 또는 테이블 변경 후 재컴파일되지 않음: - 테이블 구조가 변경되었으나 이를 사용하는 패키지 또는 프로시저가 재컴파일되지 않아 발생할 수 있음.

해결 방법

ORA-06504 오류를 해결하려면 다음과 같은 방법을 수행할 수 있습니다:

  1. PL/SQL 변수와 SELECT 문의 반환 유형 확인: - PL/SQL 변수의 선언 유형과 SELECT 문의 컬럼 데이터 유형이 일치하는지 확인하세요.
  2. 테이블 변경 후 패키지 및 프로시저 재컴파일: - 테이블 구조 변경이 있었다면 관련 패키지 및 프로시저를 재컴파일해야 합니다.
    ALTER PACKAGE my_package COMPILE;
    ALTER PROCEDURE my_procedure COMPILE;
  3. 커서 변수를 선언할 때 %ROWTYPE 사용: - 테이블 구조 변경 시 영향을 최소화하려면 %ROWTYPE을 활용하세요.
    DECLARE
       v_employee employees%ROWTYPE;
    BEGIN
       SELECT * INTO v_employee FROM employees WHERE employee_id = 100;
    END;
  4. 컬렉션 또는 사용자 정의 레코드의 데이터 구조 점검: - 컬렉션 또는 레코드 타입을 사용할 경우, 정확한 데이터 구조를 확인하세요.
  5. PL/SQL 블록에서 변수를 명확하게 매핑: - 컬럼 순서를 명확하게 지정하여 데이터를 매핑하면 오류를 방지할 수 있습니다.
    SELECT first_name, last_name INTO v_fname, v_lname FROM employees WHERE employee_id = 100;

간단 요약

  • ORA-06504 오류는 PL/SQL 블록에서 변수와 반환되는 행 유형이 일치하지 않을 때 발생합니다.
  • 해결 방법: - 변수 선언과 SELECT 문의 데이터 유형 일치 여부 확인 - 테이블 변경 후 패키지 및 프로시저 재컴파일 - %ROWTYPE 및 %TYPE을 활용하여 변경 영향을 최소화 - 컬렉션 또는 레코드 구조 점검 - 변수와 컬럼을 명확하게 매핑
반응형
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유