| Oracle FAQ | Your Portal to the Oracle Knowledge Grid | |
Home -> Community -> Usenet -> c.d.o.server -> ORA-06502: PL/SQL: numeric or value error: character string buffer too small
I'm working under Oracle 10g R2.
I have a table function which is giving me the error below. I've checked
all the variable/field sizes
and the sizes all match. I'm not entirely sure if this error is referring
to a single field or the
whole record which gets sent back.
If the buffer IS filling up what can I do to prevent it so the function will
work and not abort with
the error?
ORA-06512: at "BCN_HMP.HMP_REF_PRESCRIPT_05", line 255 ORA-06502: PL/SQL: numeric or value error: character string buffer too small ORA-06512: at line 2 -- -------------------------------------------------------------------------
--------------------------------
FUNCTION load_ref_prescript05_clm_rx RETURN ref_prescript_05_tab PIPELINED
CURSOR cr_cursor
IS
SELECT a.person_id,
a.mbr_key,
b.hmp_disease_code,
a.natl_drug_code,
a.pch_date,
SUM(a.alt_prsc_qty) AS alt_prsc_qty,
MAX(a.bus_unit_num) AS bus_unit_num,
0 AS canister_cnt,
a.contract_num,
SUM(a.daily_supply_num) AS daily_supply_num,
MAX(a.docu_num) AS docu_num,
a.file_source_code,
a.gen_cd_num,
a.mbr_sys_key,
a.mem_num_id,
SUM(a.pmt_amt) AS pmt_amt,
MAX(a.prov_num) AS prov_num,
SUM(a.qty_disp_num) AS qty_disp_num,
SUM(a.rx_cnt_num) AS rx_cnt_num,
0 AS script_cnt,
b.service_type_code,
b.spfc_thpy_class_code,
MAX(a.updt_date) AS updt_date,
MAX(a.yr_mth) AS yr_mth
FROM clm_rx_temp a,
ref_ndc_temp b
WHERE a.natl_drug_code = b.natl_drug_code
GROUP BY a.person_id,
a.mbr_key,
b.hmp_disease_code,
a.natl_drug_code,
a.pch_date,
a.contract_num,
a.file_source_code,
a.gen_cd_num,
a.mbr_sys_key,
a.mem_num_id,
b.service_type_code,
b.spfc_thpy_class_code
HAVING SUM(a.daily_supply_num) > 0
AND SUM(a.pmt_amt) > 0;
v_out ref_prescript_05_obj := ref_prescript_05_obj(
NULL,NULL,NULL,NULL,NULL,NULL,
NULL,NULL,NULL,NULL,NULL,NULL,
NULL,NULL,NULL,NULL,NULL,NULL,
NULL,NULL,NULL,NULL,NULL,NULL );
v_in cr_cursor%ROWTYPE;
BEGIN OPEN cr_cursor;
LOOP
FETCH cr_cursor INTO v_in;
EXIT WHEN cr_cursor%NOTFOUND;
v_out.person_id := v_in.person_id;
v_out.mbr_key := v_in.mbr_key;
v_out.hmp_disease_code := v_in.hmp_disease_code;
v_out.natl_drug_code := v_in.natl_drug_code;
v_out.pch_date := v_in.pch_date;
v_out.alt_prsc_qty := v_in.alt_prsc_qty;
v_out.bus_unit_num := v_in.bus_unit_num;
v_out.canister_cnt := v_in.canister_cnt;
v_out.contract_num := v_in.contract_num;
v_out.daily_supply_num := v_in.daily_supply_num;
v_out.docu_num := v_in.docu_num;
v_out.file_source_code := v_in.file_source_code;
v_out.gen_cd_num := v_in.gen_cd_num;
v_out.mbr_sys_key := v_in.mbr_sys_key;
v_out.mem_num_id := v_in.mem_num_id;
v_out.pmt_amt := v_in.pmt_amt;
v_out.prov_num := v_in.prov_num;
v_out.qty_disp_num := v_in.qty_disp_num;
v_out.rx_cnt_num := v_in.rx_cnt_num;
v_out.script_cnt := v_in.script_cnt;
v_out.service_type_code := v_in.service_type_code;
v_out.spfc_thpy_class_code := v_in.spfc_thpy_class_code;
v_out.updt_date := v_in.updt_date;
v_out.yr_mth := v_in.yr_mth;
PIPE ROW ( v_out );
END LOOP; CLOSE cr_cursor;
RETURN;
EXCEPTION
WHEN OTHERS THEN
global.sql_error('hmp_ref_prescript_05.load_ref_prescript05_clm_rx',SQLCODE)
;
RAISE global.e_unhandled_exception;
END load_ref_prescript05_clm_rx;
PROCEDURE build_ref_prescript_clm_rx
IS
BEGIN INSERT INTO ref_prescript_05
SELECT person_id,
mbr_key,
hmp_disease_code,
natl_drug_code,
pch_date,
alt_prsc_qty,
bus_unit_num,
canister_cnt,
contract_num,
daily_supply_num,
docu_num,
file_source_code,
gen_cd_num,
mbr_sys_key,
mem_num_id,
pmt_amt,
prov_num,
qty_disp_num,
rx_cnt_num,
script_cnt,
service_type_code,
spfc_thpy_class_code,
updt_date,
yr_mth
FROM TABLE ( load_ref_prescript05_clm_rx() )
COMMIT;
EXCEPTION
WHEN OTHERS THEN
global.sql_error('hmp_ref_prescript_05.build_ref_prescript_clm_rx',SQLCODE);
RAISE global.e_unhandled_exception;
END build_ref_prescript_clm_rx;
![]() |
![]() |