oracle提高字符缓冲区,Oracle存储过程中的字符串缓冲区太小错误

在Oracle 11g中遇到一个存储过程错误ORA-06502,该错误通常表示PL/SQL中的字符串缓冲区太小。问题发生在尝试将'Out_message'设置为'TestMessage'时,尽管此值似乎并不大。错误可能源于变量声明或过程调用时的参数配置。检查变量out_message的大小是否足够容纳预期的数据,并确保在调用过程中正确传递参数。
摘要由CSDN通过智能技术生成

我在Oracle 11g存储过程中收到错误。该错误是...Oracle存储过程中的字符串缓冲区太小错误

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

这是在第31行发生的事情,包含out_cnt_tot := 0;行我真的不知道为什么,有什么错线。另一位程序员创建了这个过程,我对SQL过程并不熟悉。任何人都可以帮我解决这个问题吗?

create or replace

PROCEDURE "FIP_BANKREC_PREP"

(

in_file_date in varchar2,

in_bank_code in varchar2,

out_cnt_apx_miss_no out integer,

out_cnt_prx_miss_no out integer,

out_cnt_apx_no_mtch out integer,

out_cnt_prx_no_mtch out integer,

out_cnt_ap_dup out integer,

out_cnt_pr_dup out integer,

out_cnt_bad out integer,

out_cnt_ap_load out integer,

out_cnt_pr_load out integer,

out_cnt_ap_not_load out integer,

out_cnt_pr_not_load out integer,

out_cnt_tot out integer,

out_message out varchar2

) as

file_date date;

ap_acct_no varchar2(16);

pr_acct_no varchar2(16);

-- ------------------------------------------------------

-- begin logic

-- ------------------------------------------------------

begin

file_date := to_date(in_file_date,'yyyymmdd');

out_cnt_tot := 0; --- THE ERROR IS ON THIS LINE ---

out_message := 'Test Message';

select brec_acct_code into ap_acct_no

from MSSU.zwkfi_bankrec_accts

where brec_acct_bank = in_bank_code

and brec_acct_type = 'AP';

select brec_acct_code into pr_acct_no

from MSSU.zwkfi_bankrec_accts

where brec_acct_bank = in_bank_code

and brec_acct_type = 'PR';

// The rest of the procedure...

+0

你怎么知道它是第31行?你确定?您是否尝试用十六进制编辑器查看文件?也许你可以发现一些在编辑器中不可见的UTF-8字符,但会导致问题。 –

+2

看起来更可能是那之后的路线;这些消息中的行号有时并不完全符合您的预期。这意味着它可能是您传递给过程的变量的大小,因为out_message太小,而不是过程本身的错误。你能说明你是如何调用这个的,以及如何为这个调用声明变量? –

+0

传递给out_message的唯一东西是“测试消息”字面值。我们很快会添加消息,但还没有到达它,所以我们只是在那里放置一些占位符文本。字符串“Test Message”对于该变量是否可能太短?我从未听说过这种情况。 –

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值