Oracle DBMS_DDL_INTERNAL
Version 18.3.0.1

General Information
Library Note Morgan's Library Page Header
Which has the higher priority in your organization: Deploying a new database or securing the ones you already have? Looking for a website, and resources, dedicated solely to securing Oracle databases? Check out DBSecWorx.
Purpose Support package for DBMS_DDL
AUTHID DEFINER
Dependencies
DBMS_DDL DBMS_TRIGGER_LIB USER$
DBMS_STANDARD DBMS_UTILITY V$PARAMETER
DBMS_SYS_ERROR TRIGGER$ _CURRENT_EDITION_OBJ
Documented No
Security Model Owned by SYS with no privileges granted
Source {ORACLE_HOME}/rdbms/admin/prvthddl.plb
Subprograms
 
CHECK_TRIGGER_FIRING_PROPERTY
Undocumented dbms_ddl_internal.check_trigger_firing_property(
trig_owner        IN     VARCHAR2,
trig_name         IN     VARCHAR2,
canon_owner          OUT VARCHAR2,
canon_oname          OUT VARCHAR2,
p_property        IN OUT NUMBER,
unsupported_trig     OUT BOOLEAN);
conn uwclass/uwclass@pdbdev

CREATE OR REPLACE TRIGGER t_trig
BEFORE UPDATE
ON airplanes
BEGIN
  NULL;
END t_trig;
/

conn sys@pdbdev as sysdba

set serveroutput on

DECLARE
 co VARCHAR2(30);
 cn VARCHAR2(30);
 pp NUMBER(10) := 0;
 ut BOOLEAN;
BEGIN
  dbms_ddl_internal.check_trigger_firing_property('UWCLASS', 'T_TRIG', co, cn, pp, ut);

  dbms_output.put_line(co);
  dbms_output.put_line(cn);
  dbms_output.put_line(TO_CHAR(pp));

  IF ut THEN
    dbms_output.put_line('TRUE');
  ELSE
    dbms_output.put_line('FALSE');
  END IF;
END;
/
 
COMPAT_OK
Undocumented dbms_ddl_internal.compat_ok(rcompat IN NUMBER) RETURN BOOLEAN;
set serveroutput on

BEGIN
  IF dbms_ddl_internal.compat_ok(11) THEN
    dbms_output.put_line('TRUE');
  ELSE
    dbms_output.put_line('FALSE');
  END IF;

  IF dbms_ddl_internal.compat_ok(12) THEN
    dbms_output.put_line('TRUE');
  ELSE
    dbms_output.put_line('FALSE');
  END IF;
END;
/
 
GEN_NEW_OBJECT_ID
Used to generate object identifiers dbms_ddl_internal.gen_new_object_id RETURN BINARY_INTEGER;
SELECT dbms_ddl_internal.gen_new_object_id
FROM dual;
 
IS_DDL_TRIGGER
Returns true of the trigger is a DDL Event Trigger dbms_ddl_internal.is_ddl_trigger(sys_evts IN NUMBER) RETURN BOOLEAN;
conn sys@pdbdev as sysdba

desc trigger$

SELECT sys_evts, type#, COUNT(*)
FROM trigger$
GROUP BY sys_evts, type#
ORDER BY 1;

-- from sql.bsq
type# number not null, /* trigger type: */
/* 0 = BEFORE TABLE, 1 = BEFORE ROW, 2 = AFTER TABLE, 3 = AFTER ROW */
/* 4 = INSTEAD OF TRIGGER */
-- also see dba_triggers in catprc.sql


set serveroutput on

BEGIN
  IF dbms_ddl_internal.is_ddl_trigger(31) THEN
    dbms_output.put_line('TRUE');
  ELSE
    dbms_output.put_line('FALSE');
  END IF;
END;
/

BEGIN
  IF dbms_ddl_internal.is_ddl_trigger(32) THEN
    dbms_output.put_line('TRUE');
  ELSE
    dbms_output.put_line('FALSE');
  END IF;
END;
/
 
SWAP_BOOTSTRAP
Undocumented. Used in the script utlmmig.sql dbms_ddl_internal.swap_bootstrap(replacement_tbl_name IN VARCHAR2);
TBD

Related Topics
Built-in Functions
Built-in Packages
DBMS_DDL
DDL Event Triggers
What's New In 18cR3
What's New In 19cR3

Morgan's Library Page Footer
This site is maintained by Dan Morgan. Last Updated: This site is protected by copyright and trademark laws under U.S. and International law. © 1998-2019 Daniel A. Morgan All Rights Reserved
DBSecWorx