sql:create_and_use_packeges
Розбіжності
Тут показані розбіжності між вибраною ревізією та поточною версією сторінки.
| Порівняння попередніх версійПопередня ревізіяНаступна ревізія | Попередня ревізія | ||
| sql:create_and_use_packeges [2019/10/24 10:46] – wiki_admin | sql:create_and_use_packeges [2022/05/23 15:26] (поточний) – зовнішнє редагування 127.0.0.1 | ||
|---|---|---|---|
| Рядок 1: | Рядок 1: | ||
| + | ====== Создание и использование пакетов Oracle ====== | ||
| + | ===== Создание пакета ===== | ||
| + | |||
| + | Ну прям очень полезный функционал в BD Oracle | ||
| + | |||
| + | В примере показано как можно использовать: | ||
| + | - DDL Язык определения данных | ||
| + | - DML Язык манипулирования данными | ||
| + | |||
| + | Процедура SR_04_COPY_RECORDS составлена таким образом что бы commit данных происходил каждые 2500 строк.\\ | ||
| + | Такой функционал удобно использовать для больших объёмов данных. | ||
| + | |||
| + | <code sql> | ||
| + | |||
| + | 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 | ||
| + | | ||
| + | END; | ||
| + | | ||
| + | PROCEDURE SR_02_CREATE_TABLE IS | ||
| + | BEGIN | ||
| + | | ||
| + | | ||
| + | | ||
| + | END; | ||
| + | | ||
| + | PROCEDURE SR_03_CLEAR_TABLE IS | ||
| + | BEGIN | ||
| + | execute immediate ' | ||
| + | END; | ||
| + | | ||
| + | PROCEDURE SR_04_COPY_RECORDS IS | ||
| + | v_count number :=1; | ||
| + | BEGIN | ||
| + | FOR rec IN | ||
| + | (SELECT ROWID FROM SIEBEL.S_SRV_REQ ) | ||
| + | LOOP | ||
| + | | ||
| + | | ||
| + | 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; | ||
| + | | ||
| + | | ||
| + | |||
| + | END PACK_TEST; | ||
| + | / | ||
| + | </ | ||
| + | |||
| + | ===== Запуск процедур пакета ===== | ||
| + | Для запуска процедур в пакете нужно выполнить следующий скрипт | ||
| + | |||
| + | <code sql> | ||
| + | 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; | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | </ | ||
| + | |||
| + | |||
