Re: PL/SQL Package size

From: Russ Seligman <rseligma_at_oracle.com>
Date: 1995/05/10
Message-ID: <RSELIGMA.95May10124308_at_seinfeld.oracle.com>#1/1


In article <D8AnA1.4E0_at_freenet.carleton.ca> bd860_at_FreeNet.Carleton.CA (Dave Boswell) writes:
> In <3ogj5v$m71_at_viper.is.rest.tasc.com> careywd@jupiter (William D.
> Carey) writes:
>>
>>... Has anyone heard of any guidelines or recommendations for
>>package size? Have you any real world experiences you can share? I
>>would appreciate any feedback you can give me.
>
>Was going through the forms 4.5 Beta on-line docs and came across a section
>that said on the PC, as to other platforms I'm not sure, PL/SQL pcode is
>limited to 64K. The way it was worded it is not clear if this was a limit
>of one block of code or a source module with many procedures/functions. It
>also said, in the same section, that this was approx 10K of source. Does
>anyone know or have a clearer set or numbers ?

The following info applies only to Developer/2000 apps on Microsoft Windows.

The size limit for *saving* a PL/SQL program unit is 64k. A "program unit" is a procedure, function, package spec, package body, or anonymous block. A saved program unit usually includes three components: source, DIANA (an internal parse-tree representation, used for debugging), and pcode (executable binary). Pcode and DIANA are generated when you compile the program unit. The *combined* size of these three components cannot exceed 64k.

For example: you *can* save a form with 100 program units, each containing 63k of source, as long as you don't compile them (admittedly, not very useful). As soon as you compile one 63k program unit, the addition of the DIANA and pcode will push it over the 64k limit, and you will not be able to save the form. Example: you *can* save a PL/SQL library with many compiled program units, each of which is less than 64k.

In general, program units with less than 10k of source will remain under 64k when compiled.

The latest release of Developer/2000 automatically (with warnings) strips DIANA and pcode if necessary to allow you to save the module. Generating a module (for example, an .FMX file) always strips the source and DIANA, leaving only executable pcode. In that instance, you may choose to work with a program unit having a combined size of >64k (being able to save only source), with the expectation that the pcode alone will be <64k when you generate it.

--Russ



Russ Seligman
Documentation Project Lead
Oracle Graphics / Oracle Procedure Builder Oracle Corporation
rseligma_at_us.oracle.com
Received on Wed May 10 1995 - 00:00:00 CEST

Original text of this message