0

This is my query

  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 impossible à analyser: Préciser en commentaire(s)

I get error ''string buffer too small”</p>

IF analyseEffectuee.DESCRIPTION as analyseEffectuee= Non

No problem in this case

Thanks for helping me!

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 类型。解决这个问题有点问题。我们可以将一些语法与 ALTER TYPE 命令一起使用,它允许我们处理依赖类型。 了解更多。

于 2012-07-26T15:20:43.263 回答