Mega Code Archive

 
Categories / Oracle PLSQL / System Packages
 

Timing Package function call

SQL> SQL> set serveroutput on SQL> SQL> CREATE TABLE lecturer (   2    id               NUMBER(5) PRIMARY KEY,   3    first_name       VARCHAR2(20),   4    last_name        VARCHAR2(20),   5    major            VARCHAR2(30),   6    current_credits  NUMBER(3)   7    ); Table created. SQL> SQL> INSERT INTO lecturer (id, first_name, last_name, major,current_credits)   2                VALUES (10001, 'Scott', 'Lawson','Computer Science', 11); 1 row created. SQL> SQL> INSERT INTO lecturer (id, first_name, last_name, major, current_credits)   2                VALUES (10002, 'Mar', 'Wells','History', 4); 1 row created. SQL> SQL> INSERT INTO lecturer (id, first_name, last_name, major,current_credits)   2                VALUES (10003, 'Jone', 'Bliss','Computer Science', 8); 1 row created. SQL> SQL> INSERT INTO lecturer (id, first_name, last_name, major,current_credits)   2                VALUES (10004, 'Man', 'Kyte','Economics', 8); 1 row created. SQL> SQL> INSERT INTO lecturer (id, first_name, last_name, major,current_credits)   2                VALUES (10005, 'Pat', 'Poll','History', 4); 1 row created. SQL> SQL> INSERT INTO lecturer (id, first_name, last_name, major,current_credits)   2                VALUES (10006, 'Tim', 'Viper','History', 4); 1 row created. SQL> SQL> INSERT INTO lecturer (id, first_name, last_name, major,current_credits)   2                VALUES (10007, 'Barbara', 'Blues','Economics', 7); 1 row created. SQL> SQL> INSERT INTO lecturer (id, first_name, last_name, major,current_credits)   2                VALUES (10008, 'David', 'Large','Music', 4); 1 row created. SQL> SQL> INSERT INTO lecturer (id, first_name, last_name, major,current_credits)   2                VALUES (10009, 'Chris', 'Elegant','Nutrition', 8); 1 row created. SQL> SQL> INSERT INTO lecturer (id, first_name, last_name, major,current_credits)   2                VALUES (10010, 'Rose', 'Bond','Music', 7); 1 row created. SQL> SQL> INSERT INTO lecturer (id, first_name, last_name, major,current_credits)   2                VALUES (10011, 'Rita', 'Johnson','Nutrition', 8); 1 row created. SQL> SQL> INSERT INTO lecturer (id, first_name, last_name, major,current_credits)   2                VALUES (10012, 'Sharon', 'Clear','Computer Science', 3); 1 row created. SQL> SQL> SQL> CREATE OR REPLACE PACKAGE CopyFast AS   2    TYPE StudentArray IS   3      TABLE OF lecturer%ROWTYPE;   4   5    PROCEDURE Passlecturer1(p_Parameter IN StudentArray);   6    PROCEDURE Passlecturer2(p_Parameter IN OUT StudentArray);   7    PROCEDURE Passlecturer3(p_Parameter IN OUT NOCOPY StudentArray);   8   9    PROCEDURE Go;  10  END CopyFast;  11  / Package created. SQL> show errors No errors. SQL> SQL> CREATE OR REPLACE PACKAGE BODY CopyFast AS   2    PROCEDURE Passlecturer1(p_Parameter IN StudentArray) IS   3    BEGIN   4      NULL;   5    END Passlecturer1;   6   7    PROCEDURE Passlecturer2(p_Parameter IN OUT StudentArray) IS   8    BEGIN   9      NULL;  10    END Passlecturer2;  11  12    PROCEDURE Passlecturer3(p_Parameter IN OUT NOCOPY StudentArray) IS  13    BEGIN  14      NULL;  15    END Passlecturer3;  16  17    PROCEDURE Go IS  18      myLecturerArray StudentArray := StudentArray(NULL);  19      myLecturerRec lecturer%ROWTYPE;  20      v_Time1 NUMBER;  21      v_Time2 NUMBER;  22      v_Time3 NUMBER;  23      v_Time4 NUMBER;  24    BEGIN  25      SELECT *  26        INTO myLecturerArray(1)  27        FROM lecturer  28        WHERE ID = 10007;  29      myLecturerArray.EXTEND(50000, 1);  30  31      v_Time1 := DBMS_UTILITY.GET_TIME;  32      Passlecturer1(myLecturerArray);  33      v_Time2 := DBMS_UTILITY.GET_TIME;  34      Passlecturer2(myLecturerArray);  35      v_Time3 := DBMS_UTILITY.GET_TIME;  36      Passlecturer3(myLecturerArray);  37      v_Time4 := DBMS_UTILITY.GET_TIME;  38  39      DBMS_OUTPUT.PUT_LINE('Time to pass IN: ' || TO_CHAR((v_Time2 - v_Time1) / 100));  40      DBMS_OUTPUT.PUT_LINE('Time to pass IN OUT: ' || TO_CHAR((v_Time3 -   v_Time2) / 100));  41      DBMS_OUTPUT.PUT_LINE('Time to pass IN OUT NOCOPY: ' || TO_CHAR((v_Time4 - v_Time3) / 100));  42    END Go;  43  END CopyFast;  44  / Package body created. SQL> show errors No errors. SQL> SQL> BEGIN   2    CopyFast.Go;   3  END;   4  / Time to pass IN: 0 Time to pass IN OUT: .19 Time to pass IN OUT NOCOPY: 0 PL/SQL procedure successfully completed. SQL> SQL> drop table lecturer; Table dropped. SQL>