oracle升级后报 06502,Oracle ORA-06502错误解决

作为熟练.Net码农以及非熟练Oracle用户很多时候Oracle总给我一种这货就是存心恶心我们的感觉。虽然不得不承认Oracle是个很好的产品,但是总有那么好几下被恶心到了。比如说今天遇到的奇怪错误。事情是这样子的:当在数据库中增加了新的资料后,系统中执行如下脚本时总是报ORA-06502:

select getmaterialinfo() from dual

说明下,getmaterialinfo是个返回varchar2的function。好吧,看起来是function里面变量的大小有问题,果断调试之。

不过当执行下列调试语句时,奇迹发生了:

DECLAREstruseridvarchar2(200);

v_ReturnVARCHAR2(10000);beginSTRUSERID := '10000';

v_return :=getmaterialinfo(

STRUSERID=>STRUSERID

);end;

是的,什么都没有发生!!!!就这么正常结束了!!!!!一个奇迹由于什么都没有发生而发生了,这不是个奇迹又能是什么?

好吧,神神叨叨的就跳过吧。还是简单说下结论:

返回的字符串长度超过4000,而默认缓冲区大小是4000,于是Oracle果断报了个错(不理解为什么返回类型设置了是varchar2(5000)了还需要纠结返回长度……求解释?),抛出个看错误输出的描述完全猜不到的错误来。

0b1331709591d260c1c78e86d0c51c18.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值