Skip to content

packages tree.create_dml_tables

Jan Kvetina edited this page Sep 27, 2020 · 2 revisions

tree.create_dml_tables

Repository spec: tree.purge_old, body: tree.purge_old


Signature

PROCEDURE create_dml_tables (
    in_table_like       logs.module_name%TYPE
);
Show code (38 lines)

PROCEDURE create_dml_tables (
    in_table_like       logs.module_name%TYPE
) AS
BEGIN
    tree.log_module(in_table_like);
    -- process existing data first
    process_dml_errors(in_table_like);  -- it calls tree.process_dml_error

    -- drop existing tables
    tree.drop_dml_tables(in_table_like);

    -- create DML log tables for all tables
    FOR c IN (
        SELECT
            t.table_name                            AS data_table,
            t.table_name || tree.dml_tables_postfix  AS error_table
        FROM user_tables t
        WHERE t.table_name LIKE UPPER(in_table_like)
    ) LOOP
        tree.log_debug(c.data_table, c.error_table);
        --
        DBMS_ERRLOG.CREATE_ERROR_LOG (
            dml_table_name          => USER || '.' || c.data_table,
            err_log_table_owner     => tree.dml_tables_owner,
            err_log_table_name      => c.error_table,
            skip_unsupported        => TRUE
        );
        --
        IF tree.dml_tables_owner != USER THEN
            EXECUTE IMMEDIATE
                'GRANT ALL ON ' || tree.dml_tables_owner || '.' || c.error_table ||
                ' TO ' || USER;
        END IF;
    END LOOP;

    -- refresh view
    tree.create_dml_errors_view();
END;

Clone this wiki locally