marvinamorim

Untitled

Jul 9th, 2021
215
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PL/SQL 3.22 KB | None | 0 0
  1. CREATE OR REPLACE PACKAGE PKG_ION_JOBS AS
  2.   FUNCTION F_ION_JOB_LIST RETURN ION_JOBS PIPELINED;
  3.   PROCEDURE P_CREATE_JOBS;
  4.   PROCEDURE P_CREATE_JOB(JB_NAME VARCHAR2, P_NAME VARCHAR2, JB_INTERVAL VARCHAR2);
  5. END;
  6.  
  7. /
  8.  
  9. CREATE OR REPLACE PACKAGE BODY PKG_ION_JOBS AS
  10.   FUNCTION F_ION_JOB_LIST RETURN ION_JOBS PIPELINED AS
  11.     V_DEFAULT_INTERVAL VARCHAR2(1000) := 'FREQ=DAILY; BYDAY=MON,TUE,WED,THU,FRI; BYHOUR=01; BYMINUTE=0;';
  12.   BEGIN
  13.     PIPE ROW(ION_JOB('JB_ION_SYNC_CONFIGURACOES','IONV_SYNC.IONV_MERGE.SYNC_CONFIGURACOES',V_DEFAULT_INTERVAL));
  14.     PIPE ROW(ION_JOB('JB_ION_SYNC_PRECOS','IONV_SYNC.IONV_MERGE.SYNC_PRECOS',V_DEFAULT_INTERVAL));
  15.     PIPE ROW(ION_JOB('JB_ION_SYNC_PRODUTOS','IONV_SYNC.IONV_MERGE.SYNC_PRODUTOS',V_DEFAULT_INTERVAL));
  16.     PIPE ROW(ION_JOB('JB_ION_SYNC_CLIENTES','IONV_SYNC.IONV_MERGE.SYNC_CLIENTES',V_DEFAULT_INTERVAL));
  17.     PIPE ROW(ION_JOB('JB_ION_SYNC_HISTORICO','IONV_SYNC.IONV_MERGE.SYNC_HISTORICO',V_DEFAULT_INTERVAL));
  18.     RETURN;
  19.   END F_ION_JOB_LIST;
  20.  
  21.   PROCEDURE P_CREATE_JOBS AS
  22.   BEGIN
  23.     FOR C1 IN (SELECT * FROM TABLE(F_ION_JOB_LIST)) LOOP
  24.       DBMS_OUTPUT.put_line(C1.JOB_NAME);
  25.       P_CREATE_JOB(C1.JOB_NAME, C1.PROC_NAME, C1.JOB_INTERVAL);
  26.     END LOOP;
  27.   END P_CREATE_JOBS;
  28.  
  29.   PROCEDURE P_CREATE_JOB(JB_NAME VARCHAR2, P_NAME VARCHAR2, JB_INTERVAL VARCHAR2) AS
  30.   BEGIN
  31.     BEGIN
  32.       SYS.DBMS_SCHEDULER.DROP_JOB
  33.         (JOB_NAME  => JB_NAME);
  34.       EXCEPTION
  35.         --WILL FAIL ON FIRST EXECUTION
  36.         WHEN OTHERS THEN
  37.           NULL;
  38.     END;
  39.    
  40.     SYS.DBMS_SCHEDULER.CREATE_JOB
  41.       (
  42.          JOB_NAME        => JB_NAME
  43.         ,START_DATE      => TO_TIMESTAMP_TZ('2021/07/08 14:00:00.000000 -03:00','yyyy/mm/dd hh24:mi:ss.ff tzr')
  44.         ,REPEAT_INTERVAL => JB_INTERVAL
  45.         ,END_DATE        => NULL
  46.         ,JOB_CLASS       => 'DEFAULT_JOB_CLASS'
  47.         ,JOB_TYPE        => 'STORED_PROCEDURE'
  48.         ,JOB_ACTION      => P_NAME
  49.         ,COMMENTS        => 'Importa pedidos feitos fora do horĂ¡rio com o ION Vendas'
  50.       );
  51.     SYS.DBMS_SCHEDULER.SET_ATTRIBUTE
  52.       ( NAME      => JB_NAME
  53.        ,ATTRIBUTE => 'RESTARTABLE'
  54.        ,VALUE     => FALSE);
  55.     SYS.DBMS_SCHEDULER.SET_ATTRIBUTE
  56.       ( NAME      => JB_NAME
  57.        ,ATTRIBUTE => 'LOGGING_LEVEL'
  58.        ,VALUE     => SYS.DBMS_SCHEDULER.LOGGING_OFF);
  59.     SYS.DBMS_SCHEDULER.SET_ATTRIBUTE_NULL
  60.       ( NAME      => JB_NAME
  61.        ,ATTRIBUTE => 'MAX_FAILURES');
  62.     SYS.DBMS_SCHEDULER.SET_ATTRIBUTE_NULL
  63.       ( NAME      => JB_NAME
  64.        ,ATTRIBUTE => 'MAX_RUNS');
  65.     BEGIN
  66.       SYS.DBMS_SCHEDULER.SET_ATTRIBUTE
  67.         ( NAME      => JB_NAME
  68.          ,ATTRIBUTE => 'STOP_ON_WINDOW_CLOSE'
  69.          ,VALUE     => FALSE);
  70.     EXCEPTION
  71.       -- COULD FAIL IF PROGRAM IS OF TYPE EXECUTABLE...
  72.       WHEN OTHERS THEN
  73.         NULL;
  74.     END;
  75.     SYS.DBMS_SCHEDULER.SET_ATTRIBUTE
  76.       ( NAME      => JB_NAME
  77.        ,ATTRIBUTE => 'JOB_PRIORITY'
  78.        ,VALUE     => 3);
  79.     SYS.DBMS_SCHEDULER.SET_ATTRIBUTE_NULL
  80.       ( NAME      => JB_NAME
  81.        ,ATTRIBUTE => 'SCHEDULE_LIMIT');
  82.     SYS.DBMS_SCHEDULER.SET_ATTRIBUTE
  83.       ( NAME      => JB_NAME
  84.        ,ATTRIBUTE => 'AUTO_DROP'
  85.        ,VALUE     => TRUE);
  86.     SYS.DBMS_SCHEDULER.ENABLE
  87.       (NAME  => JB_NAME);
  88.   END P_CREATE_JOB;
  89. END;
  90.  
Advertisement
Add Comment
Please, Sign In to add comment