sql >> Databáze >  >> RDS >> Oracle

Lze úlohu vytvořit dynamicky uvnitř spouštěče?

Volání DBMS_SCHEDULER.CREATE_JOB implicitně odevzdává, takže nemůžete vytvořit DBMS_SCHEDULER práce ve spoušti. Toto je jedna ze situací, které stále vyžadují použití starého DBMS_JOB balíček od DBMS_JOB.SUBMIT implicitně nezavazuje.

Tento spouštěč by měl vytvořit požadovanou úlohu pomocí DBMS_JOB balíček namísto DBMS_SCHEDULER .

create or replace
TRIGGER AFT_INSERT_TMP_TBL
AFTER INSERT ON TMP_TBL
REFERENCING OLD AS OLD NEW AS NEW
FOR EACH ROW
DECLARE 

    V_SQL VARCHAR2(1000);
    A_NAME VARCHAR2(100);
    l_jobno NUMBER;
BEGIN
    A_NAME:='ANY_NAME';

    dbms_job.submit( l_jobno,
                     'BEGIN dbms_output.put_line( ''' || a_name || ''' ); END;',
                     sysdate + interval '2' minute,
                     'sysdate + interval ''2'' minute' );
     DBMS_OUTPUT.PUT_LINE('Job Number:'||l_jobno);

END AFT_INSERT_TMP_TBL;


  1. Jak zobrazit kategorie a nekonečné podkategorie pomocí PHP a MySQL?

  2. Řešení konfliktů primárního klíče při vkládání dat do SQLite

  3. Rozdíl mezi count(1) a count(*) v orákulu

  4. Přetrvávání vypočítaného sloupce data a času v SQL Server 2005