碰到了一个互相递归的情况,在一个存储过程中,函数A需要调用B,同时函数B也需要调用A,此时发生了PLS-00313: XXXX not declared in this scope的错误。
原因很直接,在编译函数F_A时,发现F_B函数没有声明过,报错!
此时陷入了一个死循环,先放F_B函数,也会因为F_A函数未声明而报错,幸好PLSQL已经考虑到了这种偶发情况,解决的方法是“前置声明”。
即在F_A前面再加一条F_B的声明,但不包含具体的定义。这下编译就通过了。
碰到了一个互相递归的情况,在一个存储过程中,函数A需要调用B,同时函数B也需要调用A,此时发生了PLS-00313: XXXX not declared in this scope的错误。
原因很直接,在编译函数F_A时,发现F_B函数没有声明过,报错!
此时陷入了一个死循环,先放F_B函数,也会因为F_A函数未声明而报错,幸好PLSQL已经考虑到了这种偶发情况,解决的方法是“前置声明”。
即在F_A前面再加一条F_B的声明,但不包含具体的定义。这下编译就通过了。