Mega Code Archive

 
Categories / Oracle PLSQL Tutorial / Function Procedure Packages
 

Procedure create_order

SQL> SQL> CREATE TABLE error_log(   2     order_id    NUMBER(10)      NOT NULL,   3     error_code  NUMBER NOT      NULL,   4     error_text  VARCHAR2(1000)  NOT NULL,   5     logged_user VARCHAR2(30)    NOT NULL,   6     logged_date DATE            NOT NULL   7  ); Table created. SQL> SQL> CREATE TABLE order_tab(   2     order_id     NUMBER(10) PRIMARY KEY,   3     order_date   DATE NOT NULL,   4     total_qty    NUMBER,   5     total_price  NUMBER(15,2),   6     supp_id      NUMBER(6)   7  ); Table created. SQL> SQL> INSERT INTO order_tab VALUES (101,sysdate,100,750,1001); 1 row created. SQL> SQL> CREATE OR REPLACE PROCEDURE log_error   2                  (p_order_id NUMBER,   3                   p_error_code NUMBER,   4                   p_error_text VARCHAR2)   5  IS   6    PRAGMA AUTONOMOUS_TRANSACTION;   7  BEGIN   8    INSERT INTO error_log VALUES (p_order_id,p_error_code,p_error_text,USER,SYSDATE);   9    COMMIT;  10  END;  11  / Procedure created. SQL> SQL> CREATE OR REPLACE PROCEDURE create_order(p_order_id NUMBER)   2  IS   3  BEGIN   4    INSERT INTO order_tab VALUES(p_order_id,SYSDATE,NULL,NULL,1001);   5    COMMIT;   6  EXCEPTION WHEN OTHERS THEN   7    log_error(p_order_id,SQLCODE,SQLERRM);   8    ROLLBACK;   9  END;  10  / Procedure created. SQL> SQL> DECLARE   2    PRAGMA AUTONOMOUS_TRANSACTION;   3    FUNCTION dummy_log_error RETURN NUMBER;   4    v_num NUMBER(1):=0;   5    returnCode NUMBER :=dummy_log_error;   6    FUNCTION dummy_log_error RETURN NUMBER   7    IS   8    BEGIN   9      INSERT INTO error_log VALUES (-99,-99,'Dummy Error!',USER,SYSDATE);  10      RETURN (-99);  11    END;  12  BEGIN  13    INSERT INTO error_log VALUES (v_num,v_num,'No Error!',USER,SYSDATE);  14    COMMIT;  15  END;  16  / PL/SQL procedure successfully completed. SQL> SQL> drop table order_tab; Table dropped. SQL> SQL> drop table error_log; Table dropped.