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




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


第 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都能成功的原因。

你可能感兴趣的:(Oracle,troubleshoot,SQL)