0

これは私の質問です

  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;              

...

IF analyseEffectuee.DESCRIPTION as analyseEffectuee =Spécimen不可能àアナライザー:Préciserencommentaire(s)

「文字列バッファが小さすぎます」というエラーが表示されます</p>

analyseEffectuee.DESCRIPTION as analyseEffectuee=Nonの場合

この場合は問題ありません

私を助けてくれてありがとう!

4

1 に答える 1

3

エラー''文字列バッファが小さすぎます'' "

つまり、変数out_rec.SPEC3_ANALYSE_EFFECTUEは値を保持するのに十分な大きさではありません Spécimen impossible à analyser: Préciser en commentaire(s)

PL / SQL変数を定義する最良の方法は、%TYPEキーワードを使用することです。これにより、列の定義に一致する変数が作成されます。

あなたのコードはOUTRECと呼ばれるものを使用しています。あなたは私たちにこれの定義を与えていないので、あなたの特定の問題を修正するのは難しくなりますが、おそらくあなたはこのようなことをするべきです。必要な出力に一致するPL/SQLレコード・タイプを宣言してから、そのタイプの変数を宣言します。

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;

ORA-02303:タイプをドロップしたり、タイプまたはテーブルに依存するものに置き換えることはできません

つまり、これは、継承を使用してSQLタイプを使用していることを意味します。これを整理するのは少し問題です。依存型を処理できるALTERTYPEコマンドで使用できる構文がいくつかあります。 詳細をご覧ください。

于 2012-07-26T15:20:43.263 に答える