Package initialization. : Package Body « Function Procedure Packages « Oracle PL/SQL Tutorial






SQL>
SQL>
SQL> CREATE OR REPLACE PACKAGE Random AS
  2
  3    PROCEDURE ChangeSeed(p_NewSeed IN NUMBER);
  4
  5    FUNCTION Rand RETURN NUMBER;
  6
  7    PROCEDURE GetRand(p_RandomNumber OUT NUMBER);
  8
  9    FUNCTION RandMax(p_MaxVal IN NUMBER) RETURN NUMBER;
 10
 11    PROCEDURE GetRandMax(p_RandomNumber OUT NUMBER,p_MaxVal IN NUMBER);
 12  END Random;
 13  /

Package created.

SQL>
SQL> CREATE OR REPLACE PACKAGE BODY Random AS
  2
  3    v_Multiplier  CONSTANT NUMBER := 2;
  4    v_Increment   CONSTANT NUMBER := 1;
  5
  6    v_Seed        number := 1;
  7
  8    PROCEDURE ChangeSeed(p_NewSeed IN NUMBER) IS
  9    BEGIN
 10      v_Seed := p_NewSeed;
 11    END ChangeSeed;
 12
 13    FUNCTION Rand RETURN NUMBER IS
 14    BEGIN
 15      v_Seed := MOD(v_Multiplier * v_Seed + v_Increment,(2 ** 32));
 16      RETURN BITAND(v_Seed/(2 ** 16), 32767);
 17    END Rand;
 18
 19    PROCEDURE GetRand(p_RandomNumber OUT NUMBER) IS
 20    BEGIN
 21      p_RandomNumber := Rand;
 22    END GetRand;
 23
 24    FUNCTION RandMax(p_MaxVal IN NUMBER) RETURN NUMBER IS
 25    BEGIN
 26      RETURN MOD(Rand, p_MaxVal) + 1;
 27    END RandMax;
 28
 29    PROCEDURE GetRandMax(p_RandomNumber OUT NUMBER,p_MaxVal IN NUMBER) IS
 30    BEGIN
 31      -- Simply call RandMax and return the value.
 32      p_RandomNumber := RandMax(p_MaxVal);
 33    END GetRandMax;
 34
 35  BEGIN
 36    ChangeSeed(TO_NUMBER(TO_CHAR(SYSDATE, 'SSSSS')));
 37  END Random;
 38  /

Package body created.

SQL>








27.11.Package Body
27.11.1.Package with only one function
27.11.2.Package with two procedures
27.11.3.Package declaration and body
27.11.4.Use of 'get' and 'set' prefixes
27.11.5.Use package method in a procedure
27.11.6.Call function in a Package
27.11.7.Method overload
27.11.8.Package method overloading
27.11.9.Reference method from another package
27.11.10.Package Function with 'PRAGMA AUTONOMOUS_TRANSACTION'
27.11.11.Create a package containing stored procedure DELETE_ORDERS and stored function GET_employee_NAME.
27.11.12.Package initialization.
27.11.13.Use package member variable to pass value