ORA-06502: PL/SQL: numeric or value error: character string buffer too small

时间:2022-11-28 20:22:22
查了两天,没发现问题,望各路大神指点:主要代码粘贴如下:
PROCEDURE prc_k_divisionItemCZYD(prm_akc190   IN VARCHAR2, --就诊编号
                                   prm_yka103   IN VARCHAR2,
                                   prm_yac112   IN VARCHAR2, --卡类别
                                   prm_aka130   IN VARCHAR2,
                                   prm_yka055   IN number,
                                   prm_mxcount  IN number,
                                   prm_ykc141   IN VARCHAR2,
                                    prm_xml      OUT VARCHAR2,
                                   prm_AppCode  OUT VARCHAR2, -- 执行代码
                                   prm_ErrorMsg OUT VARCHAR2)





prm_xml := '<akc190>'||prm_akc190||'</akc190><yka103>'||
              prm_yka103||'</yka103><ykd007>'||'01'||
              '</ykd007><aae036>'||s_aae036||'</aae036>'||s_data||'<aac001>'||s_aac001||
              '</aac001><aac003>'||s_aac003||'</aac003><aac004>'||
              s_aac004||'</aac004><aac004_c>'||s_aac004mc||
              '</aac004_c><akc023>'||to_char(n_akc023)||
              '</akc023><aac002>'||s_aac002 ||'</aac002><aab001>'||
              s_aab001 ||'</aab001><aab004>'||s_aab004||'</aab004>     <akb020>'||s_akb020||'</akb020><akb021>'||
              s_akb021 ||'</akb021><akb023>'||s_akb023 ||
              '</akb023><yac112>'||prm_yac112||'</yac112>';


错误就报在蓝色那一行。所拼接的字符串都是符合长度要求的。后面的字符总串也返出过长度测试,为 949,不可能出现如题的问题,小弟实在是郁闷。   

4 个解决方案

#1


1)db版本是多少?这个有人说是bug 


2) 存储过程里面的变量声明部分也一起贴上来看看

#2



n_yke101      NUMBER(14); --有效开始时间
    n_zgzfxj      NUMBER(14, 4); --最高支付限价
    ka02_yka001   KA02.YKA001%TYPE; --大类编码
    ka02_yka002   KA02.YKA002%TYPE; --医保通用项目编码
    ka02_yka003   KA02.YKA003%TYPE; --医保通用项目中文名称
    ka02_yke008   KA02.YKE008%TYPE; --是否处方用药
    ka02_yke009   KA02.YKE009%TYPE; --是否医院制剂
    ka02_yke199   KA02.YKE199%TYPE; --产地编码
    ka02_yka348   KA02.YKA348%TYPE; --是否需要主编码限制
    ka02_yke187   VARCHAR2(4000); --项目审核参考信息
    ka02k6_yka299 KA02K6.YKA299%TYPE; --基金支付限价
    ka02k6_yka096 KA02K6.YKA096%TYPE; --自付比例
    ka02k6_yke011 KA02K6.YKE011%TYPE; --限制使用
    ka02k6_yke147 KA02K6.YKE147%TYPE; --医用项目流水号
    ka02k6_yke201 KA02K6.YKE201%TYPE; --中药使用方式
    n_yka336      KC22K6.YKA336%TYPE;
    n_yka317      KC22K6.YKA317%TYPE;
    n_yka318      KC22K6.YKA318%TYPE;
    n_yka319      KC22K6.YKA319%TYPE;
  
    n_yka055   kc22k6.yka315%type;
    n_yka056   kc22k6.yka317%type;
    n_yka057   kc22k6.yka317%type;
    n_yka111   kc22k6.yka319%type;
    n_ykc148   kc24k1.ykc148%type;
    n_yka254   kc24k1.yka254%type;
    n_yka224   kc24k1.yka224%type;
    n_yka346   kc24k1.yka346%type;
    n_yka347   kc24k1.yka347%type;
    n_zhye     kc04.akc087%type;
    n_akc023   NUMBER(14);
    n_mxcount  NUMBER(14);
n_count    NUMBER(14);
    n_aae011   NUMBER(14);
s_data varchar2(4000);
s_xml varchar2(4000);
    n_zhkzfje  kc24k2.yka065%type;
    n_zhxzje   kc24k2.yka065%type;
    n_yka107   kc24k2.yka107%type;
    s_ykd007   VARCHAR2(50);
    s_akb020   VARCHAR2(50);
    s_akb021   kb01.akb021%type;
    s_akb023   VARCHAR2(50);
    s_aac001   VARCHAR2(50);
    s_aac003   VARCHAR2(200);
    s_aac004   VARCHAR2(50);
    s_aac002   VARCHAR2(50);
    s_aab001   VARCHAR2(10);
    s_aab004   ab01.aab004%type;
    s_aka213   VARCHAR2(6);
    s_aac004mc VARCHAR2(10);
    s_aae036   VARCHAR2(50);
    s_jbrsj    VARCHAR2(50);
    S_DYXSBZ   VARCHAR2(50);
    s_yke110   VARCHAR2(50);
s_aka130   kc24k2.aka130%type;
n_countkc04  NUMBER(6);

#3


10.2.0.1.0  版本号

#4


如果是bug有没有办法处理?谢谢

#1


1)db版本是多少?这个有人说是bug 


2) 存储过程里面的变量声明部分也一起贴上来看看

#2



n_yke101      NUMBER(14); --有效开始时间
    n_zgzfxj      NUMBER(14, 4); --最高支付限价
    ka02_yka001   KA02.YKA001%TYPE; --大类编码
    ka02_yka002   KA02.YKA002%TYPE; --医保通用项目编码
    ka02_yka003   KA02.YKA003%TYPE; --医保通用项目中文名称
    ka02_yke008   KA02.YKE008%TYPE; --是否处方用药
    ka02_yke009   KA02.YKE009%TYPE; --是否医院制剂
    ka02_yke199   KA02.YKE199%TYPE; --产地编码
    ka02_yka348   KA02.YKA348%TYPE; --是否需要主编码限制
    ka02_yke187   VARCHAR2(4000); --项目审核参考信息
    ka02k6_yka299 KA02K6.YKA299%TYPE; --基金支付限价
    ka02k6_yka096 KA02K6.YKA096%TYPE; --自付比例
    ka02k6_yke011 KA02K6.YKE011%TYPE; --限制使用
    ka02k6_yke147 KA02K6.YKE147%TYPE; --医用项目流水号
    ka02k6_yke201 KA02K6.YKE201%TYPE; --中药使用方式
    n_yka336      KC22K6.YKA336%TYPE;
    n_yka317      KC22K6.YKA317%TYPE;
    n_yka318      KC22K6.YKA318%TYPE;
    n_yka319      KC22K6.YKA319%TYPE;
  
    n_yka055   kc22k6.yka315%type;
    n_yka056   kc22k6.yka317%type;
    n_yka057   kc22k6.yka317%type;
    n_yka111   kc22k6.yka319%type;
    n_ykc148   kc24k1.ykc148%type;
    n_yka254   kc24k1.yka254%type;
    n_yka224   kc24k1.yka224%type;
    n_yka346   kc24k1.yka346%type;
    n_yka347   kc24k1.yka347%type;
    n_zhye     kc04.akc087%type;
    n_akc023   NUMBER(14);
    n_mxcount  NUMBER(14);
n_count    NUMBER(14);
    n_aae011   NUMBER(14);
s_data varchar2(4000);
s_xml varchar2(4000);
    n_zhkzfje  kc24k2.yka065%type;
    n_zhxzje   kc24k2.yka065%type;
    n_yka107   kc24k2.yka107%type;
    s_ykd007   VARCHAR2(50);
    s_akb020   VARCHAR2(50);
    s_akb021   kb01.akb021%type;
    s_akb023   VARCHAR2(50);
    s_aac001   VARCHAR2(50);
    s_aac003   VARCHAR2(200);
    s_aac004   VARCHAR2(50);
    s_aac002   VARCHAR2(50);
    s_aab001   VARCHAR2(10);
    s_aab004   ab01.aab004%type;
    s_aka213   VARCHAR2(6);
    s_aac004mc VARCHAR2(10);
    s_aae036   VARCHAR2(50);
    s_jbrsj    VARCHAR2(50);
    S_DYXSBZ   VARCHAR2(50);
    s_yke110   VARCHAR2(50);
s_aka130   kc24k2.aka130%type;
n_countkc04  NUMBER(6);

#3


10.2.0.1.0  版本号

#4


如果是bug有没有办法处理?谢谢