2015-01-29 8 views
-1

을 실행에 내가ORA-6502 문자열 버퍼가 너무 작은 오류 즉시 문

EXECUTE IMMEDIATE 'BEGIN :project_id := 
       Activity_API.Get_Project_Id(:activity_seq); END;' 
USING OUT project_id_, activity_seq_ 

project_id_ 아래의 문에서 내 코드에서 Oracle 오류 ORA-6502 Character string buffer too small를 얻을 수 -이 기능
activity_seq_에서 지역 변수입니다 - - 이것은 함수에 대한 IN 매개 변수입니다.

나는 오류의 원인을 이해하지 못한다. 게다가 오류가 지속적으로 나타나지 않습니다.

내가 무엇을 놓치고 있는지 알려주세요. 감사합니다. .

+0

일부 'VARCHAR' 변수는 정의 된 크기보다 긴 문자열로 할당되었습니다. 데이터에만 의존합니다. –

+0

전체 오류 스택은 무엇입니까? 해당 할당 또는 호출중인 함수 내에서 발생한 오류입니까? 당신의 함수에서'project_id_'라고 선언 된 크기는 얼마입니까? 함수가 반환 할 수있는 최대 값 길이는 얼마입니까? –

+0

project_id_ 변수의 크기를 확인했습니다. 여기에있는 Get_Project_ID 함수에서 반환 한 것과 같습니다. 게다가 Get_Project_id 함수 내에서도 크기 문제는 없습니다. 게다가, 즉시 실행 즉시 호출되는이 바로부터 외부 함수 내에서 오류가 발생합니다. 내가 말했듯이 오류는 일관성이 없으므로 오류의 실제 원인을 이해하는 것을 훨씬 어렵게 만듭니다. – user4507518

답변

1

일반적으로이 오류는 VARCHAR (N) 변수가 코드 어딘가에 있고 VARCHAR (N + x) 값을 할당하려고했음을 의미합니다. 이 말을 어디서든 발생 할 수 있습니다 activity_seq_의

  • 크기가 기능을 지역 변수에 대한 너무 큰 project_id_의 크기가 함수 결과에 너무 작
  • 함수 자체
  • 에 사용되는 일부 대형 가치가있다 할당 목표 VARCHAR (n 바이트) 동안 값 VARCHAR (N의 문자) 인 경우 등

는 때때로 수 있기 때문에 가령, 사용 바이트 문자 세트 일어난다. 어쨌든, 그냥 디버깅해야합니다. 저장 프로 시저를 행 단위로 추적 할 수있는 PL/SQL Developer 또는 기타 도구를 사용하여 테스트 창에 문을 실행하고 발생 위치와 이유 및 이유를 확인하십시오.