====== Создание и использование пакетов Oracle ====== ===== Создание пакета ===== Ну прям очень полезный функционал в BD Oracle В примере показано как можно использовать: - DDL Язык определения данных - DML Язык манипулирования данными Процедура SR_04_COPY_RECORDS составлена таким образом что бы commit данных происходил каждые 2500 строк.\\ Такой функционал удобно использовать для больших объёмов данных. CREATE OR REPLACE PACKAGE PACK_TEST IS PROCEDURE SR_01_DROP_TABLE; PROCEDURE SR_02_CREATE_TABLE; PROCEDURE SR_03_CLEAR_TABLE; PROCEDURE SR_04_COPY_RECORDS; END PACK_TEST; / CREATE OR REPLACE PACKAGE BODY PACK_TEST IS -------------------------Service Request-------------------------------- PROCEDURE SR_01_DROP_TABLE IS BEGIN execute immediate 'DROP TABLE SIEBEL.CS_SERVICE_REQUEST'; END; PROCEDURE SR_02_CREATE_TABLE IS BEGIN execute immediate 'CREATE TABLE SIEBEL.CS_SERVICE_REQUEST ( row_id VARCHAR2(15) null )'; END; PROCEDURE SR_03_CLEAR_TABLE IS BEGIN execute immediate 'TRUNCATE TABLE SIEBEL.CS_SERVICE_REQUEST'; END; PROCEDURE SR_04_COPY_RECORDS IS v_count number :=1; BEGIN FOR rec IN (SELECT ROWID FROM SIEBEL.S_SRV_REQ ) LOOP INSERT INTO SIEBEL.CS_SERVICE_REQUEST(ROW_ID) SELECT SR.ROW_ID SIEBEL_ROW_ID FROM SIEBEL.S_SRV_REQ SR WHERE SR.ROWID = REC.ROWID; if v_count >2500 then commit ; v_count := 1; else v_count := v_count + 1; end if; END LOOP; commit; END; END PACK_TEST; / ===== Запуск процедур пакета ===== Для запуска процедур в пакете нужно выполнить следующий скрипт BEGIN PACK_TEST.SR_01_DROP_TABLE; END; BEGIN PACK_TEST.SR_02_CREATE_TABLE; END; BEGIN PACK_TEST.SR_03_CLEAR_TABLE; END; BEGIN PACK_TEST.SR_04_COPY_RECORDS; END;