今天调整一个包内存储过程的时候突然发现 用plsql的test调试的时候报出了一个 ora-03117 的错误。
到网上查了资料聊聊无几
经过自己2个小时的奋战,终于解决了!
思路:
首先想到的是权限的问题,是不是没有权限呢?后来重新建立了一个简答的存储过称发现局方可以使用test
那就奇怪了。按照网上说是oracle的一个bug,打补丁看来是来不及了。只能通过跳过这个bug的方法解决。
首先我们初步确定是因为这个PKG比较特色引起了调试的BUG,但是看了半天也没看出特殊的地方。
于是祭出了本人最最牛的办法:排除法。
把PKG里复杂的存储过程全部屏蔽掉。留下一个简单的。果然可以进行test了
然后一个一个存储过称恢复,最后终于发现了问题:
是有个存储过程的参数使用了自定义的类型。那个自定义的类型是另一个PKG定义的一种数组类型。
在声明那里声明的话,就导致无法调试。
解决办法:既然不可以声明那么我们就不声明了,直接把PKG里面该存储过程调到最前面去。
OK,问题解决。特此记录
阅读(4071) | 评论(0) | 转发(0) |