MINI MINI MANI MO

Path : /opt/oracle/product/18c/dbhomeXE/md/admin/
File Upload :
Current File : //opt/oracle/product/18c/dbhomeXE/md/admin/sdocswmeta.sql

Rem
Rem $Header: sdo/admin/sdocswmeta.sql /main/11 2017/07/05 11:00:12 rjanders Exp $
Rem
Rem sdocswmeta.sql
Rem
Rem Copyright (c) 2014, 2017, Oracle and/or its affiliates. 
Rem All rights reserved.
Rem
Rem    NAME
Rem      sdocswmeta.sql - <one-line expansion of the name>
Rem
Rem    DESCRIPTION
Rem      Metadata for CSW202+ service.
Rem
Rem    NOTES
Rem      Clean up MDSYS.CSW_SERVICE_INFO metadata table 
Rem      when the CSW 202 user is dropped (See prvtgmd.sql)
Rem
Rem
Rem    BEGIN SQL_FILE_METADATA 
Rem    SQL_SOURCE_FILE: sdo/admin/sdocswmeta.sql 
Rem    SQL_SHIPPED_FILE: md/admin/sdocswmeta.sql 
Rem    SQL_PHASE: SDOCSWMETA
Rem    SQL_STARTUP_MODE: NORMAL 
Rem    SQL_IGNORABLE_ERRORS: NONE 
Rem    SQL_CALLING_FILE: sdo/admin/sdowfscs.sql 
Rem    END SQL_FILE_METADATA
Rem
Rem    MODIFIED   (MM/DD/YY)
Rem    rjanders    06/30/17 - Add SYS/MDSYS prefixes
Rem    rjanders    05/10/17 - #26037683: Raise 'when other' exceptions
Rem    rjanders    03/23/17 - #25437999: Remove 'when others then NULL'
Rem                           handlers
Rem    sravada     01/11/17 - bug 25370681
Rem    bkazar      02/17/16 - Add CSW 202 metadata for drop user trigger (See Notes)
Rem    bkazar      10/25/15 - Issue: grant ... on USER_SDO_CSW_SERVICE_INFO to
Rem                           public
Rem    bkazar      10/18/15 - Add unique contraint for SDO_OWNER, CSW_TABLE_NAME in
Rem                           MDSYS.CSW_SERVICE_INFO table
Rem    bkazar      10/13/15 - Add primary key constraint to base table
Rem    bkazar      10/13/15 - Add instead of insert trigger for views
Rem    bkazar      10/12/15 - Make views available
Rem    czechar     08/14/15 - add SQL file metadata
Rem    bkazar      06/23/15 - Renamings: Table and view names are modified.
Rem                           Removed CSW in col names of MDSYS.SDO_XSD_TABLE 
Rem                           (old name MDSYS.CSW_XSD_TABLE$) and moved to sdoxsdmeta.sql.
Rem    bkazar      12/24/14 - Modified
Rem    bkazar      12/04/14 - Created
Rem

@@?/rdbms/admin/sqlsessstart.sql

--------------------------------------------------------------------------------
-- Description:
-- CSW_XSD_ID is 1,2,3,... for parent XSD and 101,102,... for children XSDs of parent XSD ID 1
--   and 201,202,... for children XSDs of parent XSD ID 2
--   and 301,302,... for children XSDs of parent XSD ID 3,
--   and 1001,1002,... for children XSDs of parent XSD ID 10, etc.
--   In other words we can have at most 99 children XSDs for a parent XSD.
-- CSW_XSD_DOC is the LOB formatted XSD.
-- CSW_XSD_NAME is either DCMI, ISO191153 or INSPIRE: ie, the type of parent XSD.
-- CSW_XSD_URL the url that will be used to register the parent or child XSD.
-- CSW_VERSION the version of CSW ie, 202+ inclusive.
--
--------------------------------------------------------------------------------


--------------------------------------------------------------------------------
-- Description:
-- There will be a view of MDSYS.CSW_SERVICE_INFO table for each CSW 202+ instance.
--------------------------------------------------------------------------------
declare
  stmt VARCHAR2(10000);
  rec_count NUMBER;

begin

  select count(*) into rec_count
      from SYS.ALL_TABLES
      where owner = 'MDSYS' and
            table_name = 'CSW_SERVICE_INFO';

  if(rec_count = 0) then
    begin
        stmt :=
            'CREATE TABLE MDSYS.CSW_SERVICE_INFO
             (SDO_OWNER       VARCHAR2(80),
              CSW_VERSION     VARCHAR2(20),
              CSW_XSD_ID      NUMBER,
              CSW_TABLE_NAME  VARCHAR2(80),
              CONSTRAINT unique_xsd
                  PRIMARY KEY (SDO_OWNER, CSW_XSD_ID),
              CONSTRAINT unique_table
                  UNIQUE (SDO_OWNER, CSW_TABLE_NAME) 
             )';

        execute immediate stmt;
        exception
          when others then
            SYS.DBMS_SYSTEM.KSDWRT(SYS.DBMS_SYSTEM.TRACE_FILE,
                                   'EXCEPTION[sdocswmeta.sql(' || $$PLSQL_LINE || ')1]: ' || SQLERRM); RAISE;
    end;
  end if;
end;
/


--------------------------------------------------------------------------------
-- Description:
-- Create ALL view of MDSYS.CSW_SERVICE_INFO table.
--------------------------------------------------------------------------------
CREATE OR REPLACE VIEW MDSYS.ALL_SDO_CSW_SERVICE_INFO AS
SELECT b.SDO_OWNER       OWNER,
       b.CSW_VERSION     CSW_VERSION,
       b.CSW_XSD_ID      XSD_ID,
       b.CSW_TABLE_NAME  TABLE_NAME
FROM MDSYS.CSW_SERVICE_INFO b,
     SYS.all_objects a
WHERE  b.CSW_TABLE_NAME =  a.object_name
  AND  b.SDO_OWNER      =  a.owner
  AND  a.object_type    in ('TABLE', 'SYNONYM', 'VIEW');


--------------------------------------------------------------------------------
-- Description:
-- Create USER view of MDSYS.CSW_SERVICE_INFO table.
--------------------------------------------------------------------------------
CREATE OR REPLACE VIEW MDSYS.USER_SDO_CSW_SERVICE_INFO AS
SELECT CSW_VERSION, XSD_ID, TABLE_NAME 
    FROM MDSYS.ALL_SDO_CSW_SERVICE_INFO
    WHERE OWNER = SYS_CONTEXT('userenv', 'CURRENT_USER');


-- ----------------------------------------------------------------
--    DML Triggers regarding the Metadata Table and Its Views
-- ----------------------------------------------------------------
CREATE OR REPLACE TRIGGER MDSYS.SDO_CSW_TRIGGER_INS1 
INSTEAD OF INSERT ON MDSYS.USER_SDO_CSW_SERVICE_INFO
FOR EACH ROW
DECLARE
   owner VARCHAR2(130);
   --valid VARCHAR2(32);
BEGIN
   owner := user;
   INSERT INTO MDSYS.CSW_SERVICE_INFO VALUES(owner, :new.CSW_VERSION, :new.XSD_ID, :new.TABLE_NAME);
END; 
/
show errors;


CREATE OR REPLACE TRIGGER MDSYS.SDO_CSW_TRIGGER_DEL1
INSTEAD OF DELETE ON MDSYS.USER_SDO_CSW_SERVICE_INFO
FOR EACH ROW
DECLARE
   owner VARCHAR2(130);
   --valid VARCHAR2(32);
BEGIN
   owner := user;
   DELETE FROM MDSYS.CSW_SERVICE_INFO
       WHERE SDO_OWNER = owner AND
             CSW_XSD_ID = :old.XSD_ID;

END;
/
show errors;


CREATE OR REPLACE TRIGGER MDSYS.SDO_CSW_TRIGGER_UPD1
INSTEAD OF UPDATE ON MDSYS.USER_SDO_CSW_SERVICE_INFO
FOR EACH ROW
DECLARE
   owner VARCHAR2(130);
   --valid VARCHAR2(32);
BEGIN
   owner := user;
   -- First delete the old entry
   DELETE FROM MDSYS.CSW_SERVICE_INFO 
       WHERE SDO_OWNER = owner AND
             CSW_XSD_ID = :old.XSD_ID;
             
  -- insert the new entry
  INSERT INTO MDSYS.CSW_SERVICE_INFO VALUES(owner, :new.CSW_VERSION, :new.XSD_ID, :new.TABLE_NAME);
  
END;
/
show errors;




-- ----------------------------------------------------------------
-- Grant privileges
-- ----------------------------------------------------------------
grant read,insert, delete, update on MDSYS.USER_SDO_CSW_SERVICE_INFO to public;
grant read on MDSYS.ALL_SDO_CSW_SERVICE_INFO to public;
create or replace  public synonym USER_SDO_CSW_SERVICE_INFO
for MDSYS.USER_SDO_CSW_SERVICE_INFO;
create or replace public synonym ALL_SDO_CSW_SERVICE_INFO for
MDSYS.ALL_SDO_CSW_SERVICE_INFO;

commit;



--set serveroutput off;
@?/rdbms/admin/sqlsessend.sql

OHA YOOOO