Oracle FAQ Your Portal to the Oracle Knowledge Grid
HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US
 

Home -> Community -> Usenet -> c.d.o.server -> Re: Circular reference with private procedures in package

Re: Circular reference with private procedures in package

From: Dave Hau <davehau_nospam_123_at_nospam_netscape.net>
Date: Wed, 02 Jul 2003 21:27:14 GMT
Message-ID: <3F034E32.1090905@nospam_netscape.net>


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

Original text of this message

HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US