这是我的查询
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 as analyseEffectuee =Spécimenuntergàisalyse:Préciserencommentaire(s)
我收到错误''字符串缓冲区太小了“
IF analyseEffectuee.DESCRIPTION as analyseEffectuee = Non
在这种情况下没问题
感谢您的帮助!
答案 0 :(得分: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命令,它允许我们处理依赖类型。 Find out more.