Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
![]() |
![]() |
Home -> Community -> Usenet -> c.d.o.server -> Re: Circular reference with private procedures in package
Leo J. Hart IV wrote:
> Circular reference with private procedures in package
>
> Hello! Here's my question...
>
> The following package will not compile because of a circular reference
> between inner1 and inner2. Because private functions need to be placed
> in a specific order and inner1 and inner2 are inter-dependant, there
> doesn't seem to be a way to get this package to compile other than
> making INNER1 public. Is there anything else I can do?
>
>
> CREATE OR REPLACE
> PACKAGE test_pkg
> IS
> /**************************************************************************************************/
> FUNCTION OUTER(
> pNumber IN NUMBER
> )
> RETURN NUMBER;
>
> /**************************************************************************************************/
> END;
> /
>
>
> CREATE OR REPLACE
> PACKAGE BODY test_pkg
> IS
All you need is a forward declaration of INNER1 here.
FUNCTION INNER1 (pNumber IN NUMBER) RETURN NUMBER;
Cheers,
Dave
> /**************************************************************************************************/
> FUNCTION INNER2(
> pNumber IN NUMBER
> )
> RETURN NUMBER
> IS
> lNumber NUMBER;
> BEGIN
> lNumber := pNumber + 1;
>
> IF lNumber < 10 THEN
> lNumber := INNER1(lNumber);
> END IF;
>
> RETURN lNumber;
> END;
>
> /**************************************************************************************************/
> FUNCTION INNER1(
> pNumber IN NUMBER
> )
> RETURN NUMBER
> IS
> lNumber NUMBER;
> BEGIN
> lNumber := pNumber + 1;
>
> IF lNumber < 10 THEN
> lNumber := INNER2(lNumber);
> END IF;
>
> RETURN lNumber;
> END;
>
> /**************************************************************************************************/
> FUNCTION OUTER(
> pNumber IN NUMBER
> )
> RETURN NUMBER
> IS
> lNumber NUMBER;
> BEGIN
> lNumber := INNER1(pNumber);
> RETURN lNumber;
> END;
> /**************************************************************************************************/
> END;
> /
Received on Wed Jul 02 2003 - 16:27:14 CDT
![]() |
![]() |