For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!
SQL> create or replace package mypck is 2 procedure myprc; 3 end; 4 / Package created SQL> SQL> create or replace package body mypck is 2 procedure myprc is 3 begin 4 dbms_output.put_line('I''m in '||$$PLSQL_UNIT); 5 end; 6 end; 7 / Package body created SQL> exec mypck.myprc; I'm in MYPCK PL/SQL procedure successfully completed
/****************************************************************************** * Constants and package variables ******************************************************************************/ gc_pk_name CONSTANT VARCHAR2(30) := 'PK_TEST';
PROCEDURE P_TEST_INIT IS c_proc_name CONSTANT VARCHAR2(80) := 'P_TEST_INIT'; v_log_info TYPE_LOG_INFO := TYPE_LOG_INFO(gc_pk_name, c_proc_name); -- create the log type instance BEGIN NULL; -- code goes here EXCEPTION WHEN ??? THEN v_log_info.log_code := SQLCODE; -- add info to the log type v_log_info.log_message := SQLERRM; v_log_info.log_time := SYSDATE; pk_log.p_log_error(v_log_info); raise; END P_PK_TEST_INIT;
DROP TYPE TYPE_LOG_INFO; CREATE OR REPLACE TYPE TYPE_LOG_INFO AUTHID DEFINER AS OBJECT ( /* ***************************************************************************** * NAME: TYPE_LOG_INFO * PURPOSE: Holds info used by PK_LOG package to log errors. * * Using a TYPE instance keeps the procedures and functions * independent of the logging mechanism. * * If new logging features are needed a SUB TYPE can be derived * from this base type to add the new functionality without * breaking any existing code. * * REVISIONS: * Ver Date Author Description * * 1.00 mm/dd/yyyy me Initial Version. ******************************************************************************/ PACKAGE_NAME VARCHAR2(80), PROC_NAME VARCHAR2(80), STEP_NUMBER NUMBER, LOG_LEVEL VARCHAR2(10), LOG_CODE NUMBER, LOG_MESSAGE VARCHAR2(1024), LOG_TIME TIMESTAMP, CONSTRUCTOR FUNCTION type_log_info (p_package_name IN VARCHAR2 DEFAULT 'Uninitialized', p_proc_name IN VARCHAR2 DEFAULT 'Uninitialized', p_step_number IN NUMBER DEFAULT 1, p_LOG_level IN VARCHAR2 DEFAULT 'Uninit', p_LOG_code IN NUMBER DEFAULT -1, p_LOG_message IN VARCHAR2 DEFAULT 'Uninitialized', p_LOG_time IN DATE DEFAULT SYSDATE) RETURN SELF AS RESULT ) NOT FINAL; / DROP TYPE BODY TYPE_LOG_INFO; CREATE OR REPLACE TYPE BODY TYPE_LOG_INFO IS CONSTRUCTOR FUNCTION type_log_info (p_package_name IN VARCHAR2 DEFAULT 'Uninitialized', p_proc_name IN VARCHAR2 DEFAULT 'Uninitialized', p_step_number IN NUMBER DEFAULT 1, p_LOG_level IN VARCHAR2 DEFAULT 'Uninit', p_LOG_code IN NUMBER DEFAULT -1, p_LOG_message IN VARCHAR2 DEFAULT 'Uninitialized', p_LOG_time IN DATE DEFAULT SYSDATE) RETURN SELF AS RESULT IS BEGIN self.package_name := p_package_name; self.proc_name := p_proc_name; self.step_number := p_step_number; self.LOG_level := p_LOG_level; self.LOG_code := p_LOG_code; self.LOG_message := p_LOG_message; self.LOG_time := p_LOG_time; RETURN; END; END; / SHO ERR