====== Создание и использование пакетов 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;