Use serially reusable packages - performance of application, PL-SQL Programming

Use Serially Reusable Packages

To help you to manage the use of memory, the PL/SQL gives the pragma SERIALLY_ REUSABLE that mark some packages as serially reusable. So mark a package if its state is required only for the duration of one call to the server (for illustration, an OCI call to the server or a server-to-server RPC).

The global memory for these packages is pooled in the System Global Area (SGA), not allocated to the individual users in the User Global Area (UGA). In that way, the package work region can be reused. If the call to the server ends, the memory is return to the pool. Each time the package is reused, the public variables are initialized to its default values or to NULL.

The maximum number of work regions required for a package is the number of concurrent users of that package that is usually much smaller than the number of logged-on users. The bigger use of SGA memory is more than offset by the reduced use of UGA memory. The Oracle ages-out work areas are also not in use if it requires reclaiming the SGA memory.

For packages without a body, you code the pragma in the package specification using the

Syntax as shown:

PRAGMA SERIALLY_REUSABLE;

For packages with a body, you should code the pragma in the specification and body. You cannot only code the pragma in the body. The illustration below shows how a public variable in a serially reusable package behaves across the call boundaries:

CREATE OR REPLACE PACKAGE sr_pkg IS

PRAGMA SERIALLY_REUSABLE;

num NUMBER := 0;

PROCEDURE init_pkg_state(n NUMBER);

PROCEDURE print_pkg_state;

END sr_pkg;

/

CREATE OR REPLACE PACKAGE BODY sr_pkg IS

PRAGMA SERIALLY_REUSABLE;

/* Initialize package state. */

PROCEDURE init_pkg_state (n NUMBER) IS

BEGIN

sr_pkg.num := n;

END;

/* Print package state. */

PROCEDURE print_pkg_state IS

BEGIN

DBMS_OUTPUT.PUT_LINE('Num is: ' || sr_pkg.num);

END;

END sr_pkg;

/

BEGIN

/* Initialize package state. */

sr_pkg.init_pkg_state(4);

/* On same server call, print package state. */

sr_pkg.print_pkg_state; -- prints 4

END;

/

-- subsequent server call

BEGIN

-- package's public variable will initialized to its

-- default value automatically

sr_pkg.print_pkg_state; -- prints 0

END;

Posted Date: 10/5/2012 4:59:55 AM | Location : United States







Related Discussions:- Use serially reusable packages - performance of application, Assignment Help, Ask Question on Use serially reusable packages - performance of application, Get Answer, Expert's Help, Use serially reusable packages - performance of application Discussions

Write discussion on Use serially reusable packages - performance of application
Your posts are moderated
Related Questions
Using PRIOR and NEXT The PRIOR(n) returns the index number that precede index n in a collection. The NEXT(n) returns the index number which succeed the index n. If n has no pr

Row Counterparts of Table Operators SQL does not have counterparts tuple rename, tuple projection, tuple extension, tuple join and tuple compose. To obtain the same effects as

Example of Table Literal - SQL Example: A Table Literal (correct version) VALUES ('S1', 'C1', 'Anne'), ('S1', 'C2', 'Anne'), ('S2', 'C1', 'Boris'), ('S3', 'C3'

LONG and LONG RAW You use the LONG datatype to store the variable-length character strings. The LONG datatype is such as the VARCHAR2 datatype, except that the maximum length o

Seeking a programmer to design a legal document with pre-existing fields that could allow the auto-population of client(s) information (i.e. Name, Account Number, Address etc.) int

Project Description: We organize an online system called ACPAS we have created a project called EVO that can be use by our customers to integrate their web sites with the Acpas

Package STANDARD package named STANDARD defines the PL/SQL atmosphere. The package specification globally declares the exceptions, types, and subprograms that are available a

I want to implement heap sort algorithm in pl sql please share the source code for guidance

MAX and MIN operator in SQL Example: (SELECT MAX (Mark) FROM EXAM_MARK WHERE StudentId = 'S1') (SELECT MIN (Mark) FROM EXAM_MARK WHERE StudentId = 'S1') Example

ALTER TABLE bb_basketitem ADD CONSTRAINT bitems_qty_ck CHECK (quantity BEGIN INSERT INTO bb_basketitem VALUES (88,8,10.8,21,16,2,3); END; Brewbean’s wants to add a check