oracle 包体:xlsx_builder_pkg / ORA-06502:数字或值错误:文本缓冲区太小

ezykj2lf  于 2023-05-16  发布在  Oracle
关注(0)|答案(1)|浏览(177)

我使用的包:xlsx_builder_pkg(从某个语句导出数据到excel文件)。我添加了一个附件:

  • xlsx_builder_pkg.pkb
  • xlsx_builder_pkg.pks

我尝试将所有数据从机构表导出到Excel文件,并使用一个名为国家的工作表。
我收到以下错误:

ORA-06502: PL/SQL: number or value error: text buffer too small
ORA-06512: "SYS.XLSX_BUILDER_PKG", line 1646
ORA-06512: "SYS.XLSX_BUILDER_PKG", line 1870

我运行的语句:

BEGIN
xlsx_builder_Pkg.clear_workbook;
xlsx_builder_pkg.new_sheet ('country');
xlsx_builder_pkg.query2sheet (p_sql => '**SELECT distinct name FROM system.institution where rownum < 500**', p_sheet => 1);    
xlsx_builder_pkg.save ('country', 'country.xlsx');
END;

但是如果我使用语句'**SELECT distinct name FROM system.institution where rownum < 400**',它就可以完美地工作。我认为有文件大小的限制。但我能以何种方式改变它。
根据错误,我认为问题出在函数finish的某个地方

ORA-06512: "SYS.XLSX_BUILDER_PKG", line 1646
ORA-06512: "SYS.XLSX_BUILDER_PKG", line 1870

第1646行说明了t_tmp := t_tmp || t_str;的问题
请帮帮我
我使用的包和包体如下:https://github.com/mortenbra/alexandria-plsql-utils/blob/master/ora/xlsx_builder_pkg.pkb

https://github.com/mortenbra/alexandria-plsql-utils/blob/master/ora/xlsx_builder_pkg.pks

wlwcrazw

wlwcrazw1#

也许你在数据库中使用2字节编码?请将包中的所有位置从> 32000更改为> 16000。

For example line 1638 
     old: if t_len > 32000 
     new: if t_len > 16000

为我帮助的错误

ORA-06502: PL/SQL: number or value error: text buffer too small
error ORA-06512: on  "SIEBEL_CHECK.XLSX_BUILDER_PKG", line 1853

in line 1848 I changed
     old: if length( t_tmp ) + length( t_str ) > 32000
     new: if length( t_tmp ) + length( t_str ) > 16000

相关问题