2012-07-26 117 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;    

... 

IF analyseEffectuee.DESCRIPTION作为analyseEffectuee =试样不可能à分析器:更加精密恩评注(S)

我得到错误'字符串缓冲区太小”

IF analyseEffectuee.DESCRIPTION为analyseEffectuee =非

没有PROBL em在这种情况下

感谢您的帮助!

+3

“analyseEffectuee.DESCRIPTION”和“out_rec.SPEC3_ANALYSE_EFFECTUE”的类型和大小是什么?如果我不得不猜测,我会说你有一个尺寸不匹配:收件人比内容小。 – 2012-07-26 15:15:05

回答

3

I get Error ''string buffer too small” "

这也就意味着你的变量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: cannot drop or replace a type with type or table dependents

因此,这意味着你使用SQL类型,与继承。对此进行排序是一个问题。有一些我们可以使用ALTER TYPE命令的语法,它允许我们处理依赖类型。 Find out more.

+0

NUMERO_SPECIMEN3它的一个varchar(50),但[错误]编译(1:1):ORA-02303:不能删除或替换类型或表依赖的类型 – FrankSharp 2012-07-26 15:41:12

+0

我尝试将其更改为varchar250我得到[错误]编译1:1):ORA-02303:不能删除或替换具有类型或表格依赖项的类型 – FrankSharp 2012-07-26 15:42:25

相关问题