2012-07-26 3 views
0

이 내 쿼리은 오류 "ORA-06502 : PL/SQL : 숫자 또는 값 오류 : 너무 작은 문자열 버퍼를"얻는 것은

begin 
       select ceq_specimens.numero as NUMERO, 
         analyseEffectuee.DESCRIPTION as analyseEffectuee 
       into out_rec.NUMERO_SPECIMEN3, out_rec.SPEC3_ANALYSE_EFFECTUE   
       from CEQ_FORMULAIRES_ANALYSES 
       inner join ceq_liste_choix analyseEffectuee on analyseEffectuee.ID_LISTE_CHOIX=CEQ_FORMULAIRES_ANALYSES.ID_ANALYSE_EFFECTUE 
       inner join ceq_specimens on ceq_specimens.ID_SPECIMEN=CEQ_FORMULAIRES_ANALYSES.ID_SPECIMEN and ceq_specimens.ID_SPECIMEN=vintIdSpecimen3 
       where CEQ_FORMULAIRES_ANALYSES.ID_FORMULAIRE=out_rec.ID_FORMULAIRE; 
      EXCEPTION 
      WHEN NO_DATA_FOUND THEN 
      out_rec.NUMERO_SPECIMEN3 := ' '; 
      out_rec.SPEC3_ANALYSE_EFFECTUE := ' '; 
      END;    

... 

analyseEffectuee.DESCRIPTION IF 그대로 analyseEffectuee = 표본 불가능 분석기 A : Préciser EN commentaire (들)

내가

"너무 작은 오류 ''문자열 버퍼를 얻을 IF analyseEffectuee.DESCRIPTION analyseEffectuee = 비

없음 probl로 이 경우에

도와 주셔서 감사합니다! 그게 무슨 뜻인지

+3

'analyseEffectuee.DESCRIPTION'과'out_rec.SPEC3_ANALYSE_EFFECTUE'의 종류와 크기는 무엇입니까? 맞춰야한다면 크기가 맞지 않는다고 말할 것입니다.받는 사람이 내용보다 작습니다. –

답변

3

I get Error ''string buffer too small” "

은 당신의 변수 out_rec.SPEC3_ANALYSE_EFFECTUE이 TEH 값 Spécimen impossible à analyser: Préciser en commentaire(s)을 저장하기에 충분히 크지 않다.

PL/SQL 변수를 정의하는 가장 좋은 방법은 % TYPE 키워드를 사용하는 것입니다. 이렇게하면 열의 정의와 일치하는 변수가 만들어집니다.

코드에는 OUTREC이라는 코드가 사용됩니다. 당신은 우리에게 이것의 정의를주지 않았기 때문에 당신의 특정한 문제를 해결하기가 더 어려워 지겠지만 아마 이런 식으로해야 할 것입니다. 당신은 출력을 원하는하고 일치하는 PL/SQL 레코드 유형을 선언, 그 유형의 변수를 선언 :


ORA-02303: cannot drop or replace a type with type or table dependents

type my_rec_t is record (
    NUMERO_SPECIMEN1 ceq_specimens.numer%type, 
    SPEC1_ANALYSE_EFFECTUE analyseEffectuee.DESCRIPTION%type,   
    NUMERO_SPECIMEN2 ceq_specimens.numer%type, 
    SPEC2_ANALYSE_EFFECTUE analyseEffectuee.DESCRIPTION%type,   
    NUMERO_SPECIMEN3 ceq_specimens.numer%type, 
    SPEC3_ANALYSE_EFFECTUE analyseEffectuee.DESCRIPTION%type   
); 
out_rec my_rec_t; 
그래서 이것이 당신이 상속, SQL 유형을 사용하는 것을 의미한다. 이것을 분류하는 것은 약간의 문제입니다. 우리가 의존적 인 타입을 처리 할 수있게 해주는 ALTER TYPE 명령어와 함께 사용할 수있는 구문이 있습니다. Find out more.

+0

NUMERO_SPECIMEN3 해당 varchar (50)하지만 [오류] 컴파일 (1 : 1) : ORA-02303 : 형식을 삭제하거나 형식을 바꾸거나 테이블 종속성을 사용할 수 없습니다. – FrankSharp

+0

varchar250으로 변경하려고합니다. [Error] Compilation 1 : 1) : ORA-02303 : 유형 또는 테이블 종속 항목을 삭제하거나 대체 할 수 없습니다. – FrankSharp

관련 문제