Инструменты пользователя

Инструменты сайта


sql:create_and_use_packeges

Создание и использование пакетов 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;
sql/create_and_use_packeges.txt · Последние изменения: 2019/10/24 10:47 — wiki_admin