遇到ORA-06502==》跳到了自己挖的坑里

本文介绍了一种在Oracle数据库中创建视图时遇到的ORA-00604及ORA-06502等错误,并详细分析了错误产生的原因,即触发器中定义的变量长度不足导致的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >




在创建视图时报如下错误:


第 61 行出现错误: 
ORA-00604: 递归 SQL 级别 1 出现错误
ORA-06502: PL/SQL: 数字或值错误 :  字符串缓冲区太小
ORA-06512: 在 line 14 


经检查,发现以下情况:


1.该create view 语句比较长。
2.单独执行里面的select能够正常执行。
3.在定位错误的时候,将该视图”剥皮“,分成2个视图,1个嵌套1个,2个视图都能创建成功。


折腾了半天,还是一筹莫展呀,最后发现跳进了自己挖的”坑“里。

原因:


之前为了限制DDL权限做过1个trigger,但是有部分特别的却不需要限制,所以DDL中必须对SQL进行检查,符合条件的就要放行。
问题就出在这,trigger里定义的变量varchar2(4000),这个create view 估计是超过4000了,这也是为什么拆成2个和单独执行SQL都能成功的原因。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值