CREATE OR REPLACE PROCEDURE BOOL_IN_TEST (X IN BOOLEAN) AS
BEGIN
  NULL;
END BOOL_IN_TEST;
|
CREATE OR REPLACE PROCEDURE TESTECHO(T IN VARCHAR2, U OUT VARCHAR2) AS
BEGIN
  U := CONCAT('test-' , T);
END;
|
CREATE OR REPLACE PACKAGE SOMEPACKAGE AS
  TYPE TBL1 IS TABLE OF VARCHAR2(111) INDEX BY BINARY_INTEGER;
  TYPE TBL2 IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
  TYPE ARECORD IS RECORD (
    T1 TBL1,
    T2 TBL2,
    T3 BOOLEAN
  );
  TYPE TBL3 IS TABLE OF ARECORD INDEX BY PLS_INTEGER;
  TYPE TBL4 IS TABLE OF TBL2 INDEX BY PLS_INTEGER;
  PROCEDURE P1(SIMPLARRAY IN TBL1, FOO IN VARCHAR2);
  PROCEDURE P2(OLD IN TBL2, NEW IN TBL2);
  PROCEDURE P3(RECARRAY IN TBL3);
  PROCEDURE P4(REC IN ARECORD);
  PROCEDURE P5(OLDREC IN ARECORD, NEWREC OUT ARECORD);
  PROCEDURE P6(BAR IN TBL4);
  PROCEDURE P7(SIMPLARRAY IN TBL1, FOO IN VARCHAR2);
  PROCEDURE P7(SIMPLARRAY IN TBL1, FOO IN VARCHAR2, BAR IN VARCHAR2);
  PROCEDURE P8(FOO IN VARCHAR2);
  PROCEDURE P8(FOO IN VARCHAR2, BAR IN VARCHAR2);
  FUNCTION F1(OLDREC IN ARECORD, FOO IN VARCHAR2) RETURN ARECORD;
  FUNCTION F2(OLD IN TBL2, SIMPLARRAY IN TBL1) RETURN TBL2;
  FUNCTION F3(SIMPLARRAY IN TBL1, OLDVAR IN VARCHAR2) RETURN VARCHAR2;
  FUNCTION F4(RECARRAY IN TBL3, OLDREC IN ARECORD) RETURN TBL3;
END SOMEPACKAGE;
|
CREATE OR REPLACE PACKAGE BODY SOMEPACKAGE AS
  PROCEDURE P1(SIMPLARRAY IN TBL1, FOO IN VARCHAR2) AS
  BEGIN
    NULL;
  END P1;
  PROCEDURE P2(OLD IN TBL2, NEW IN TBL2) AS
  BEGIN
    NULL;
  END P2;
  PROCEDURE P3(RECARRAY IN TBL3) AS
  BEGIN
    NULL;
  END P3;
  PROCEDURE P4(REC IN ARECORD) AS
  BEGIN
    NULL;
  END P4;
  PROCEDURE P5(OLDREC IN ARECORD, NEWREC OUT ARECORD) AS
  BEGIN
    NEWREC.T1 := OLDREC.T1;
    NEWREC.T2 := OLDREC.T2;
    NEWREC.T3 := OLDREC.T3;
  END P5;
  PROCEDURE P6(BAR IN TBL4) AS
  BEGIN
    NULL;
  END P6;
  PROCEDURE P7(SIMPLARRAY IN TBL1, FOO IN VARCHAR2) AS
  BEGIN
    NULL;
  END P7;
  PROCEDURE P7(SIMPLARRAY IN TBL1, FOO IN VARCHAR2, BAR IN VARCHAR2) AS
  BEGIN
    NULL;
  END P7;
  PROCEDURE P8(FOO IN VARCHAR2) AS
  BEGIN
    NULL;
  END P8;
  PROCEDURE P8(FOO IN VARCHAR2, BAR IN VARCHAR2) AS
  BEGIN
    NULL;
  END P8;
  FUNCTION F1(OLDREC IN ARECORD, FOO IN VARCHAR2) RETURN ARECORD IS arec ARECORD;
  BEGIN
    arec.T1 := OLDREC.T1;
    arec.T2 := OLDREC.T2;
    arec.T3 := OLDREC.T3;
    RETURN arec;
  END F1;	  
  FUNCTION F2(OLD IN TBL2, SIMPLARRAY IN TBL1) RETURN TBL2 IS
  BEGIN
    RETURN OLD;
  END F2;     
  FUNCTION F3(SIMPLARRAY IN TBL1, OLDVAR IN VARCHAR2) RETURN VARCHAR2 IS
  BEGIN
    RETURN OLDVAR;
  END F3;
  FUNCTION F4(RECARRAY IN TBL3, OLDREC IN ARECORD) RETURN TBL3 IS
  BEGIN
	RETURN RECARRAY;
  END F4;
END SOMEPACKAGE;
|
CREATE OR REPLACE TYPE SOMEPACKAGE_TBL1 AS TABLE OF VARCHAR2(111)|
CREATE OR REPLACE TYPE SOMEPACKAGE_TBL2 AS TABLE OF NUMBER|
CREATE OR REPLACE TYPE SOMEPACKAGE_ARECORD AS OBJECT (
  T1 SOMEPACKAGE_TBL1,
  T2 SOMEPACKAGE_TBL2,
  T3 INTEGER
)|
CREATE OR REPLACE TYPE SOMEPACKAGE_TBL3 AS TABLE OF SOMEPACKAGE_ARECORD|
CREATE OR REPLACE TYPE SOMEPACKAGE_TBL4 AS TABLE OF SOMEPACKAGE_TBL2|
CREATE OR REPLACE TYPE SOMEPACKAGE_CRECORD AS OBJECT (
  C1 SOMEPACKAGE_ARECORD,
  C2 SOMEPACKAGE_TBL2
)|
CREATE OR REPLACE TYPE SOMEPACKAGE_TBL5 AS TABLE OF DATE|
CREATE OR REPLACE FUNCTION SF_TBL1(NUM IN INTEGER) RETURN SOMEPACKAGE_TBL1 AS
    L_DATA SOMEPACKAGE_TBL1 := SOMEPACKAGE_TBL1();
  BEGIN
      FOR I IN 1 .. NUM LOOP
         L_DATA.EXTEND;
         L_DATA(I) := 'entry ' || i;
      END LOOP;
     RETURN L_DATA;
END;
|
CREATE OR REPLACE FUNCTION BUILDTBL2(NUM IN INTEGER) RETURN SOMEPACKAGE_TBL2 AS
    L_DATA SOMEPACKAGE_TBL2 := SOMEPACKAGE_TBL2();
    BEGIN
	FOR I IN 1 .. NUM LOOP
	 L_DATA.EXTEND;
	 L_DATA(I) := I;
	END LOOP;
    RETURN L_DATA;
END BUILDTBL2;
|
CREATE OR REPLACE FUNCTION BUILDTBL5(NUM IN INTEGER) RETURN SOMEPACKAGE_TBL5 AS
    L_DATA SOMEPACKAGE_TBL5 := SOMEPACKAGE_TBL5();
    BEGIN
	FOR I IN 1 .. NUM LOOP
	 L_DATA.EXTEND;
	 L_DATA(I) := SYSDATE;
	END LOOP;
    RETURN L_DATA;
END BUILDTBL5;
|
CREATE OR REPLACE FUNCTION BUILDARECORD(NUM IN INTEGER) RETURN SOMEPACKAGE_ARECORD AS
    L_DATA SOMEPACKAGE_ARECORD := SOMEPACKAGE_ARECORD(NULL, NULL, NULL);
    BEGIN
     L_DATA.T1 := SF_TBL1(NUM);
     L_DATA.T2 := BUILDTBL2(NUM);
     L_DATA.T3 := NUM;
    RETURN L_DATA;
END BUILDARECORD;
|
CREATE OR REPLACE FUNCTION BUILDTBL4(NUM IN INTEGER) RETURN SOMEPACKAGE_TBL4 AS
    L_DATA SOMEPACKAGE_TBL4 := SOMEPACKAGE_TBL4();
    BEGIN
	FOR I IN 1 .. NUM LOOP
	 L_DATA.EXTEND;
	 L_DATA(I) := BUILDTBL2(I);
	END LOOP;
    RETURN L_DATA;
END BUILDTBL4;
|
CREATE OR REPLACE FUNCTION BUILDCRECORD(NUM IN INTEGER) RETURN SOMEPACKAGE_CRECORD AS
    L_DATA SOMEPACKAGE_CRECORD := SOMEPACKAGE_CRECORD(NULL, NULL);
    BEGIN
     L_DATA.C1 := BUILDARECORD(NUM);
     L_DATA.C2 := BUILDTBL2(NUM);
    RETURN L_DATA;
END BUILDCRECORD;
|
CREATE OR REPLACE TYPE EMP_INFO AS OBJECT (
 ID       NUMBER(5),
 NAME     VARCHAR2(50)
)|
CREATE OR REPLACE TYPE EMP_INFO_ARRAY AS VARRAY(3) OF EMP_INFO|
CREATE OR REPLACE PACKAGE ANOTHER_ADVANCED_DEMO
AS
  FUNCTION BUILDEMPARRAY(NUM IN INTEGER) RETURN EMP_INFO_ARRAY;
END;
|
CREATE OR REPLACE PACKAGE BODY ANOTHER_ADVANCED_DEMO AS
  FUNCTION BUILDEMPARRAY(NUM IN INTEGER) RETURN EMP_INFO_ARRAY AS
    L_DATA EMP_INFO_ARRAY := EMP_INFO_ARRAY();
  BEGIN
      FOR I IN 1 .. NUM LOOP
         L_DATA.EXTEND;
         L_DATA(I) := EMP_INFO(I, 'entry ' || i);
      END LOOP;
     RETURN L_DATA;
  END BUILDEMPARRAY;
END;
|
CREATE OR REPLACE TYPE REGION AS OBJECT (
 REG_ID       NUMBER(5),
 REG_NAME     VARCHAR2(50)
)|
CREATE OR REPLACE TYPE EMP_ADDRESS AS OBJECT (
 STREET       VARCHAR2(100),
 SUBURB       VARCHAR2(50),
 ADDR_REGION  REGION,
 POSTCODE     INTEGER
)|
CREATE OR REPLACE TYPE EMP_OBJECT AS OBJECT (
 EMPLOYEE_ID   NUMBER(8),
 ADDRESS       EMP_ADDRESS,
 EMPLOYEE_NAME VARCHAR2(80),
 DATE_OF_HIRE  DATE
)|
CREATE OR REPLACE PACKAGE ADVANCED_OBJECT_DEMO AS
  FUNCTION ECHOREGION(AREGION IN REGION) RETURN REGION;
  FUNCTION ECHOEMPADDRESS(ANEMPADDRESS IN EMP_ADDRESS) RETURN EMP_ADDRESS;
  FUNCTION ECHOEMPOBJECT(ANEMPOBJECT IN EMP_OBJECT) RETURN EMP_OBJECT;
END;
|
CREATE OR REPLACE PACKAGE BODY ADVANCED_OBJECT_DEMO AS
  FUNCTION ECHOREGION(AREGION IN REGION) RETURN REGION AS
  BEGIN
     RETURN AREGION;
  END ECHOREGION;
  FUNCTION ECHOEMPADDRESS(ANEMPADDRESS IN EMP_ADDRESS) RETURN EMP_ADDRESS AS
  BEGIN
    RETURN ANEMPADDRESS;
  END ECHOEMPADDRESS;
  FUNCTION ECHOEMPOBJECT(ANEMPOBJECT IN EMP_OBJECT) RETURN EMP_OBJECT AS
  BEGIN
    RETURN ANEMPOBJECT;
  END ECHOEMPOBJECT;
END;
|
CREATE OR REPLACE PACKAGE TEST_TYPES AS
   FUNCTION ECHO_INTEGER (PINTEGER IN INTEGER) RETURN INTEGER;
   FUNCTION ECHO_SMALLINT(PSMALLINT IN SMALLINT) RETURN SMALLINT;
   FUNCTION ECHO_NUMERIC (PNUMERIC IN NUMERIC) RETURN NUMERIC;
   FUNCTION ECHO_DEC (PDEC IN DEC) RETURN DEC;
   FUNCTION ECHO_DECIMAL (PDECIMAL IN DECIMAL) RETURN DECIMAL;
   FUNCTION ECHO_NUMBER (PNUMBER IN NUMBER) RETURN NUMBER;
   FUNCTION ECHO_VARCHAR(PVARCHAR IN VARCHAR) RETURN VARCHAR;
   FUNCTION ECHO_VARCHAR2 (PINPUTVARCHAR IN VARCHAR2) RETURN VARCHAR2;
   FUNCTION ECHO_CHAR (PINPUTCHAR IN CHAR) RETURN CHAR;
   FUNCTION ECHO_REAL (PREAL IN REAL) RETURN REAL;
   FUNCTION ECHO_FLOAT (PINPUTFLOAT IN FLOAT) RETURN FLOAT;
   FUNCTION ECHO_DOUBLE (PDOUBLE IN DOUBLE PRECISION) RETURN DOUBLE PRECISION;
   FUNCTION ECHO_DATE (PINPUTDATE IN DATE) RETURN DATE;
   FUNCTION ECHO_TIMESTAMP (PINPUTTS IN TIMESTAMP) RETURN TIMESTAMP;
   FUNCTION ECHO_CLOB (PINPUTCLOB IN CLOB) RETURN CLOB;
   FUNCTION ECHO_BLOB (PINPUTBLOB IN BLOB) RETURN BLOB;
   FUNCTION ECHO_LONG (PLONG IN LONG) RETURN LONG;
   FUNCTION ECHO_LONG_RAW (PLONGRAW IN LONG RAW) RETURN LONG RAW;
   FUNCTION ECHO_RAW(PRAW IN RAW) RETURN RAW;
END;
|
CREATE OR REPLACE PACKAGE BODY TEST_TYPES AS
   FUNCTION ECHO_INTEGER (PINTEGER IN INTEGER) RETURN INTEGER IS
   BEGIN
      RETURN PINTEGER;
   END ECHO_INTEGER;
   FUNCTION ECHO_SMALLINT(PSMALLINT IN SMALLINT) RETURN SMALLINT IS
   BEGIN
      RETURN PSMALLINT;
   END ECHO_SMALLINT;
   FUNCTION ECHO_NUMERIC (PNUMERIC IN NUMERIC) RETURN NUMERIC IS
   BEGIN
      RETURN PNUMERIC;
   END ECHO_NUMERIC;
   FUNCTION ECHO_DEC (PDEC IN DEC) RETURN DEC IS
   BEGIN
      RETURN PDEC;
   END ECHO_DEC;
   FUNCTION ECHO_DECIMAL (PDECIMAL IN DECIMAL) RETURN DECIMAL IS
   BEGIN
      RETURN PDECIMAL;
   END ECHO_DECIMAL;
   FUNCTION ECHO_NUMBER (PNUMBER IN NUMBER) RETURN NUMBER IS
   BEGIN
      RETURN PNUMBER;
   END ECHO_NUMBER;
   FUNCTION ECHO_VARCHAR(PVARCHAR IN VARCHAR) RETURN VARCHAR IS
   BEGIN
      RETURN PVARCHAR;
   END ECHO_VARCHAR;
   FUNCTION ECHO_VARCHAR2 (PINPUTVARCHAR IN VARCHAR2) RETURN VARCHAR2 IS
   BEGIN
      RETURN PINPUTVARCHAR;
   END ECHO_VARCHAR2;
   FUNCTION ECHO_CHAR (PINPUTCHAR IN CHAR) RETURN CHAR IS
   BEGIN
      RETURN PINPUTCHAR;
   END ECHO_CHAR;
   FUNCTION ECHO_REAL (PREAL IN REAL) RETURN REAL IS
   BEGIN
      RETURN PREAL;
   END ECHO_REAL;
   FUNCTION ECHO_FLOAT (PINPUTFLOAT IN FLOAT) RETURN FLOAT IS
   BEGIN
      RETURN PINPUTFLOAT;
   END ECHO_FLOAT;
   FUNCTION ECHO_DOUBLE (PDOUBLE IN DOUBLE PRECISION) RETURN DOUBLE PRECISION IS
   BEGIN
      RETURN PDOUBLE;
   END ECHO_DOUBLE;
   FUNCTION ECHO_DATE (PINPUTDATE IN DATE) RETURN DATE IS
   BEGIN
      RETURN PINPUTDATE;
   END ECHO_DATE;
   FUNCTION ECHO_TIMESTAMP (PINPUTTS IN TIMESTAMP) RETURN TIMESTAMP IS
   BEGIN
      RETURN PINPUTTS;
   END ECHO_TIMESTAMP;
   FUNCTION ECHO_CLOB (PINPUTCLOB IN CLOB) RETURN CLOB IS
   BEGIN
      RETURN PINPUTCLOB;
   END ECHO_CLOB;
   FUNCTION ECHO_BLOB (PINPUTBLOB IN BLOB) RETURN BLOB IS
   BEGIN
      RETURN PINPUTBLOB;
   END ECHO_BLOB;
   FUNCTION ECHO_LONG (PLONG IN LONG) RETURN LONG IS
   BEGIN
      RETURN PLONG;
   END ECHO_LONG;
   FUNCTION ECHO_LONG_RAW (PLONGRAW IN LONG RAW) RETURN LONG RAW IS
   BEGIN
      RETURN PLONGRAW;
   END ECHO_LONG_RAW;
   FUNCTION ECHO_RAW(PRAW IN RAW) RETURN RAW IS
   BEGIN
      RETURN PRAW;
   END ECHO_RAW;
END;
|
CREATE TABLE LTBL ( 
  EMPNO NUMBER(4) NOT NULL, 
  FNAME VARCHAR2(40), 
  LNAME VARCHAR2(40),  
  PRIMARY KEY (EMPNO) 
)|
CREATE TYPE LTBL_PKG_LTBL_REC AS OBJECT (
      EMPNO NUMBER(4),
      FNAME VARCHAR2(40),
      LNAME VARCHAR2(40)
)|
CREATE TYPE LTBL_PKG_LTBL_TAB AS TABLE OF LTBL_PKG_LTBL_REC|
CREATE PACKAGE LTBL_PKG AS
  TYPE LTBL_REC IS RECORD(
    EMPNO LTBL.EMPNO%TYPE,
    FNAME LTBL.FNAME%TYPE,
    LNAME LTBL.LNAME%TYPE
  );
  TYPE LTBL_TAB IS TABLE OF LTBL_REC INDEX BY BINARY_INTEGER;
  PROCEDURE LTBL_QUERY(BLOCK_DATA IN OUT LTBL_TAB, P_EMPNO IN NUMBER);
END;
|
CREATE PACKAGE BODY LTBL_PKG AS
  PROCEDURE LTBL_QUERY(BLOCK_DATA IN OUT LTBL_TAB, P_EMPNO IN NUMBER) IS
  BEGIN
    BLOCK_DATA(2).EMPNO := 789;
    BLOCK_DATA(2).FNAME := 'John';
    BLOCK_DATA(2).LNAME := 'Blair';
  END;
END;
|
CREATE OR REPLACE TYPE TESMAN_TYPE1 AS OBJECT (
 ACCT          NUMBER,
 COUNTRY       VARCHAR2(30),
 ADDR_DIVISION VARCHAR2(30),
 STATE         VARCHAR2(30)
)
|
CREATE OR REPLACE TYPE TESMAN_TYPE2 AS OBJECT (
 PNR     NUMBER,
 COMPANY VARCHAR2(30),
 SE      VARCHAR2(30),
 SCRIP   VARCHAR2(30),
 TT      TESMAN_TYPE1
)
|
CREATE OR REPLACE TYPE TESMAN_TYPE3 AS VARRAY(2) OF TESMAN_TYPE2
|
CREATE TABLE TESMAN_TABLE1 (
  IDE NUMBER,
  IDTT TESMAN_TYPE1
)
|
CREATE TABLE TESMAN_TABLE2 (
  SRNO NUMBER,
  DETAIL TESMAN_TYPE2
)
|
CREATE TABLE TESMAN_TABLE3 (
  ID INTEGER,
  TT3 TESMAN_TYPE3
)
|
CREATE OR REPLACE PACKAGE TESMANPACK AS
  FUNCTION TESMANFUNC17(PARAM1 IN INTEGER) RETURN TESMAN_TABLE2%ROWTYPE;
  PROCEDURE TESMANPROC17(PARAM1 IN INTEGER, REC OUT TESMAN_TABLE2%ROWTYPE);
  PROCEDURE TESMANPROC17b(OLDREC IN TESMAN_TABLE3%ROWTYPE, NEWREC OUT TESMAN_TABLE3%ROWTYPE);
END TESMANPACK;
|
CREATE OR REPLACE PACKAGE BODY TESMANPACK AS

  FUNCTION TESMANFUNC17(PARAM1 IN INTEGER) RETURN TESMAN_TABLE2%ROWTYPE AS
    L_DATA1 TESMAN_TABLE2%ROWTYPE;
    CURSOR C_EMP(PARAMTEMP IN INTEGER) IS SELECT * FROM TESMAN_TABLE2 TE WHERE TE.SRNO=PARAMTEMP;
  BEGIN
      OPEN C_EMP(PARAM1);
      LOOP
        FETCH C_EMP INTO L_DATA1;
        EXIT WHEN C_EMP%NOTFOUND;
      END LOOP;
      RETURN L_DATA1;
  END;

  PROCEDURE TESMANPROC17( PARAM1 IN INTEGER, REC OUT TESMAN_TABLE2%ROWTYPE) AS
  BEGIN
    REC := TESMANFUNC17(PARAM1);
  END;

  PROCEDURE TESMANPROC17b(OLDREC IN TESMAN_TABLE3%ROWTYPE, NEWREC OUT TESMAN_TABLE3%ROWTYPE) AS
  BEGIN
    NEWREC := OLDREC;
  END;

END TESMANPACK;
|