前置声明解决相互递归时的PLS-00313

时间:2024-04-05 10:23:42

碰到了一个互相递归的情况,在一个存储过程中,函数A需要调用B,同时函数B也需要调用A,此时发生了PLS-00313: XXXX not declared in this scope的错误。

前置声明解决相互递归时的PLS-00313

原因很直接,在编译函数F_A时,发现F_B函数没有声明过,报错!

此时陷入了一个死循环,先放F_B函数,也会因为F_A函数未声明而报错,幸好PLSQL已经考虑到了这种偶发情况,解决的方法是“前置声明”。

前置声明解决相互递归时的PLS-00313

即在F_A前面再加一条F_B的声明,但不包含具体的定义。这下编译就通过了。