Користувальницькі налаштування

Налаштування сайту


sql:create_and_use_packeges

Розбіжності

Тут показані розбіжності між вибраною ревізією та поточною версією сторінки.

Посилання на цей список змін

Порівняння попередніх версійПопередня ревізія
sql:create_and_use_packeges [2019/10/24 10:47] wiki_adminsql: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
 +   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;
 +/
 +</code>
 +
 +===== Запуск процедур пакета =====
 +Для запуска процедур в пакете нужно выполнить следующий скрипт
 +
 +<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;
 +
 +
 +
 +
 +</code>
 +
 +