MINI MINI MANI MO

Path : /opt/oracle/product/18c/dbhomeXE/rdbms/admin/
File Upload :
Current File : //opt/oracle/product/18c/dbhomeXE/rdbms/admin/mgdtrg.sql

Rem
Rem $Header: rdbms/admin/mgdtrg.sql /main/7 2017/05/28 22:46:07 stanaya Exp $
Rem
Rem mgdtrg.sql
Rem
Rem Copyright (c) 2006, 2017, Oracle and/or its affiliates. 
Rem All rights reserved.
Rem
Rem    NAME
Rem      mgdtrg.sql - <one-line expansion of the name>
Rem
Rem    DESCRIPTION
Rem      <short description of component this file declares/defines>
Rem
Rem    NOTES
Rem      <other useful comments, qualifications, etc.>
Rem
Rem    BEGIN SQL_FILE_METADATA
Rem    SQL_SOURCE_FILE: rdbms/admin/mgdtrg.sql
Rem    SQL_SHIPPED_FILE: rdbms/admin/mgdtrg.sql
Rem    SQL_PHASE: MGDTRG
Rem    SQL_STARTUP_MODE: NORMAL
Rem    SQL_IGNORABLE_ERRORS: NONE
Rem    END SQL_FILE_METADATA
Rem    
Rem    MODIFIED   (MM/DD/YY)
Rem    hgong       03/02/16 - add call to sqlsessstart and sqlsessend
Rem    hgong       03/31/15 - bug 20746710 support 128 bytes
Rem    hgong       02/05/13 - add trigger for mgd_id_lookup_table
Rem    hgong       05/21/10 - add mgd_id_category_tab
Rem    hgong       05/31/06 - move after delete trigger logic to utility 
Rem    hgong       05/16/06 - rename MGD_ID_META to MGD_ID_UTL 
Rem    hgong       04/04/06 - rename oidcode.jar 
Rem    hgong       03/31/06 - create triggers 
Rem    hgong       03/31/06 - Created
Rem

Rem ********************************************************************
Rem #22747454: Indicate Oracle-Supplied object
@@?/rdbms/admin/sqlsessstart.sql
Rem ********************************************************************

prompt .. Creating the user_mgd_id_scheme_ins_trig trigger for inserting into user_mgd_id_category view

CREATE OR REPLACE TRIGGER user_mgd_id_category_ins_trig
INSTEAD OF INSERT ON user_mgd_id_category
REFERENCING NEW AS n
FOR EACH ROW
declare
 user_name varchar2(128);
BEGIN
  EXECUTE IMMEDIATE 'SELECT user FROM dual' into user_name;
  INSERT INTO mgd_id_category_tab(
    owner,
    category_id,
    category_name,
    version,
    agency,
    uri
  )
  VALUES(
    user_name,
    :n.category_id,
    :n.category_name,
    :n.version,
    :n.agency,
    :n.uri
  );
END;
/
show errors;

prompt .. Creating the user_mgd_id_category_del_trig trigger for deleting from user_mgd_id_category view

CREATE OR REPLACE TRIGGER user_mgd_id_category_del_trig
INSTEAD OF DELETE ON user_mgd_id_category
REFERENCING OLD AS o
FOR EACH ROW
DECLARE
  user_name    VARCHAR2(256);
BEGIN

  EXECUTE IMMEDIATE 'SELECT USER FROM DUAL' INTO user_name;

  DELETE FROM mgd_id_category_tab
  WHERE OWNER = user_name
    AND NLS_UPPER(category_id) = :o.category_id;
END;
/
SHOW ERRORS;



prompt .. Creating the user_mgd_id_category_upd_trig trigger for updating user_mgd_id_category view

CREATE OR REPLACE TRIGGER user_mgd_id_category_upd_trig
INSTEAD OF UPDATE ON user_mgd_id_category
REFERENCING OLD AS o NEW AS n
FOR EACH ROW
DECLARE
  user_name    VARCHAR2(256);
BEGIN
  EXECUTE IMMEDIATE 'SELECT USER FROM DUAL' INTO user_name;
  UPDATE mgd_id_category_tab
  SET(
    category_name,
    version,
    agency,
    uri
  ) =
  (SELECT
    :n.category_name,
    :n.version,
    :n.agency,
    :n.uri
   FROM DUAL
   WHERE owner = user_name
     AND category_id = :o.category_id
  );
END;
/
show errors;


prompt .. Creating the idcode_scheme_before_ins_trig trigger which validates each TDT before insertion and sets the type_name and encoding fields appropriately

CREATE OR REPLACE TRIGGER mgd_id_scheme_before_ins_trig
BEFORE INSERT ON mgd_id_scheme_tab
FOR EACH ROW
DECLARE
  type_and_encodings VARCHAR2(1024);
  pos1               INTEGER;
  pos2               INTEGER;
BEGIN
  type_and_encodings := DBMS_MGD_ID_UTL.validate_scheme(:new.tdt_xml);
  pos1 := instr(type_and_encodings, ';');
  pos2 := instr(type_and_encodings, ';', 1, 2);
  :new.type_name := substr(type_and_encodings, 0, pos1 - 1);
  :new.encodings := substr(type_and_encodings, pos1 + 1, pos2 - pos1 - 1); 
  :new.components := substr(type_and_encodings, pos2 + 1, length(type_and_encodings) - pos2); 
END;
/
show errors;


prompt .. Creating the idcode_scheme_before_upd_trig trigger which validates the new scheme after update and refreshes the category to which it belongs

CREATE OR REPLACE TRIGGER mgd_id_scheme_before_upd_trig
BEFORE UPDATE ON mgd_id_scheme_tab
FOR EACH ROW
DECLARE
  type_and_encodings VARCHAR2(1024);
  pos1               INTEGER;
  pos2               INTEGER;
BEGIN
  type_and_encodings := DBMS_MGD_ID_UTL.validate_scheme(:NEW.tdt_xml);
  pos1 := instr(type_and_encodings, ';');
  pos2 := instr(type_and_encodings, ';', 1, 2);
  :new.type_name := substr(type_and_encodings, 0, pos1 - 1);
  :new.encodings := substr(type_and_encodings, pos1 + 1, pos2 - pos1 - 1); 
  :new.components := substr(type_and_encodings, pos2 + 1, length(type_and_encodings) - pos2);  
  DBMS_MGD_ID_UTL.refresh_category(to_char(:old.category_id));
END;
/
show errors;


prompt .. Creating the user_mgd_id_scheme_ins_trig trigger for inserting into user_mgd_id_scheme view

CREATE OR REPLACE TRIGGER user_mgd_id_scheme_ins_trig
INSTEAD OF INSERT ON user_mgd_id_scheme
REFERENCING NEW AS n
FOR EACH ROW
declare
 user_name varchar2(128);
BEGIN
  EXECUTE IMMEDIATE 'SELECT user FROM dual' into user_name;
  INSERT INTO mgd_id_scheme_tab(
    owner,
    category_id,
    type_name,
    tdt_xml,
    encodings,
    components
  )
  VALUES(
    user_name,
    :n.category_id,
    :n.type_name,
    :n.tdt_xml,
    :n.encodings,
    :n.components
  );
END;
/
show errors;



prompt .. Creating the user_mgd_id_scheme_del_trig trigger for deleting from user_mgd_id_scheme view

CREATE OR REPLACE TRIGGER user_mgd_id_scheme_del_trig
INSTEAD OF DELETE ON user_mgd_id_scheme
REFERENCING OLD AS o
FOR EACH ROW
DECLARE
  user_name    VARCHAR2(256);
BEGIN
  
  EXECUTE IMMEDIATE 'SELECT USER FROM DUAL' INTO user_name;

  DELETE FROM mgd_id_scheme_tab 
  WHERE OWNER = user_name
    AND NLS_UPPER(category_id) = :o.category_id
    AND type_name = :o.type_name;
END;
/
SHOW ERRORS;


prompt .. Creating the user_mgd_id_scheme_upd_trig trigger for updating user_mgd_id_scheme view

CREATE OR REPLACE TRIGGER user_mgd_id_scheme_upd_trig
INSTEAD OF UPDATE ON user_mgd_id_scheme
REFERENCING OLD AS o NEW AS n
FOR EACH ROW
DECLARE
  user_name    VARCHAR2(256);
BEGIN
  EXECUTE IMMEDIATE 'SELECT USER FROM DUAL' INTO user_name;
  UPDATE mgd_id_scheme_tab
  SET(
    tdt_xml,
    encodings,
    components
  ) = 
  (SELECT 
    :n.tdt_xml,
    :n.encodings,
    :n.components
   FROM DUAL
   WHERE owner = user_name
     AND category_id = :o.category_id
     AND type_name = :o.type_name 
  );
END;
/
show errors;


prompt .. Creating the mgd_id_lookup_table_ins_trig trigger for inserting into mgd_id_lookup_table 

CREATE OR REPLACE TRIGGER mgd_id_lookup_table_ins_trig
BEFORE INSERT ON mgd_id_lookup_table
FOR EACH ROW
BEGIN
  :new.url := NLS_LOWER(:new.url);
  :new.use_local :=  NLS_UPPER(:new.use_local);
END;
/
show errors;

prompt .. Creating the mgd_id_lookup_table_upd_trig trigger for updating mgd_id_lookup_table 

CREATE OR REPLACE TRIGGER mgd_id_lookup_table_upd_trig
BEFORE UPDATE ON mgd_id_lookup_table
FOR EACH ROW
BEGIN
  :new.url := NLS_LOWER(:new.url);
  :new.use_local :=  NLS_UPPER(:new.use_local);
END;
/
show errors;

Rem ********************************************************************
Rem #22747454: Indicate Oracle-Supplied object
@@?/rdbms/admin/sqlsessend.sql
Rem ********************************************************************


OHA YOOOO