MINI MINI MANI MO

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

Rem
Rem $Header: sdo/admin/sdolrsmd.sql /main/21 2017/10/20 11:01:24 rjanders Exp $
Rem
Rem sdolrsmd.sql
Rem
Rem Copyright (c) 2001, 2017, Oracle and/or its affiliates. 
Rem All rights reserved.
Rem
Rem    NAME
Rem      sdolrsmd.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: sdo/admin/sdolrsmd.sql 
Rem    SQL_SHIPPED_FILE: md/admin/sdolrsmd.sql 
Rem    SQL_PHASE: SDOLRSMD
Rem    SQL_STARTUP_MODE: NORMAL 
Rem    SQL_IGNORABLE_ERRORS: NONE 
Rem    SQL_CALLING_FILE: sdo/admin/catmdlocp2.sql 
Rem    END SQL_FILE_METADATA
Rem
Rem    MODIFIED   (MM/DD/YY)
Rem    rjanders    10/08/17 - Add MDSYS to spatial type
Rem    rjanders    06/30/17 - Add SYS/MDSYS prefixes
Rem    jcwang      06/12/17 - bug-26182373 use session_user in triggers 
Rem    rjanders    05/10/17 - #26037683: Raise 'when other' exceptions
Rem    rjanders    04/13/17 - #25814260: Allow quoted bumpy-case usernames
Rem    rjanders    03/23/17 - #25437999: Remove 'when others then NULL'
Rem                           handlers
Rem    sravada     01/11/17 - bug 25370681
Rem    jcwang      09/09/15 - add SQL file metadata
Rem    rjanders    02/01/15 - #20418139: Cannot grant SELECT to PUBLIC
Rem    rjanders    01/02/15 - long identifier project phase 1
Rem    rjanders    09/16/13 - OCCS: Remove hardtabs
Rem    rjanders    03/15/13 - #16473696: Start/End _ORACLE_SCRIPT
Rem                           initialization
Rem    rjanders    03/14/12 - Change upper() to nls_upper() [security]
Rem    jcwang      05/10/11 - change current_schema to current_user
Rem    sravada     02/25/05 - bug 4206128 
Rem    sravada     07/29/04 - add exception handlers 
Rem    sravada     04/20/04 - bug 3575747 
Rem    sravada     12/17/02 - remove drop index
Rem    sravada     04/26/02 - remove dba views
Rem    jcwang      10/03/01 - Merged jcwang_lrs_metadata
Rem    jcwang      09/21/01 - Created
Rem

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

--
-- Metadata for LRS Geometry Layer
--

-- drop  public synonym user_sdo_lrs_metadata;
-- drop  public synonym  all_sdo_lrs_metadata;

-- NOTE: DO NOT change this table definition - for backward compatibility,
-- ALL future table modifications MUST be done using ALTER TABLE operations.

declare
  already_exists exception;
  pragma exception_init(already_exists, -00955);
begin
  begin
   execute immediate 
 ' Create Table MDSYS.SDO_LRS_METADATA_TABLE (
  SDO_OWNER             VARCHAR2(32),
  SDO_TABLE_NAME        VARCHAR2(32) NOT NULL,
  SDO_COLUMN_NAME       VARCHAR2(32) NOT NULL,
  SDO_DIM_POS           NUMBER       NOT NULL,                  
  SDO_DIM_UNIT          VARCHAR2(32),
  CHECK (SDO_DIM_POS = 3 OR SDO_DIM_POS = 4),    
  CONSTRAINT            unique_tables
    PRIMARY KEY (SDO_OWNER, SDO_TABLE_NAME,SDO_COLUMN_NAME)) ';
  exception
    when already_exists then NULL;
    when others then
      SYS.DBMS_SYSTEM.KSDWRT(SYS.DBMS_SYSTEM.TRACE_FILE,
                             'EXCEPTION[sdolrsmd.sql(' || $$PLSQL_LINE || ')1]: ' || SQLERRM); RAISE;
 end;
end;
/
SHOW ERRORS

-- 12.2: Increase SDO_OWNER, SDO_TABLE_NAME column size from 32 to 130

begin
  execute immediate
 ' alter table MDSYS.SDO_LRS_METADATA_TABLE
   modify ( SDO_OWNER VARCHAR2(130),
            SDO_TABLE_NAME VARCHAR2(130),
            SDO_COLUMN_NAME VARCHAR2(130) ) ';
  exception when others then 
    SYS.DBMS_SYSTEM.KSDWRT(SYS.DBMS_SYSTEM.TRACE_FILE,
      'alter table SDO_LRS_METADATA_TABLE ERROR=' || SQLERRM);
end;
/
SHOW ERRORS

-- drop view MDSYS.USER_SDO_LRS_METADATA;
Create or replace view MDSYS.USER_SDO_LRS_METADATA AS
SELECT  SDO_TABLE_NAME  TABLE_NAME, 
        SDO_COLUMN_NAME COLUMN_NAME,
        SDO_DIM_POS     DIM_POS, 
        SDO_DIM_UNIT    DIM_UNIT
FROM MDSYS.SDO_LRS_METADATA_TABLE,
     (select sys_context('userenv', 'CURRENT_USER') username from SYS.DUAL)
WHERE  sdo_owner = username;

-- drop view MDSYS.ALL_SDO_LRS_METADATA;
Create or replace view MDSYS.ALL_SDO_LRS_METADATA AS
SELECT  SDO_OWNER       OWNER, 
        SDO_TABLE_NAME  TABLE_NAME, 
        SDO_COLUMN_NAME COLUMN_NAME,
        SDO_DIM_POS     DIM_POS, 
        SDO_DIM_UNIT    DIM_UNIT
FROM MDSYS.SDO_LRS_METADATA_TABLE;

declare
  already_exists exception;
  pragma exception_init(already_exists, -00955);
begin
  begin
  execute immediate  
  ' CREATE INDEX MDSYS.SDO_LRS_META_IDX ON 
     MDSYS.SDO_LRS_METADATA_TABLE(SDO_OWNER,SDO_TABLE_NAME) ';
   exception
     when already_exists then NULL;
     when others then
       SYS.DBMS_SYSTEM.KSDWRT(SYS.DBMS_SYSTEM.TRACE_FILE,
                              'EXCEPTION[sdolrsmd.sql(' || $$PLSQL_LINE || ')2]: ' || SQLERRM); RAISE;
  end;
end;
/       

grant select,insert,delete,update on mdsys.user_sdo_lrs_metadata to public;

grant read on mdsys.all_sdo_lrs_metadata to public;

create or replace  public synonym user_sdo_lrs_metadata for 
   mdsys.user_sdo_lrs_metadata;

create or replace  public synonym all_sdo_lrs_metadata for 
  mdsys.all_sdo_lrs_metadata;


-- SDO_LRS_METADATA_TABLE triggers

CREATE OR REPLACE TRIGGER MDSYS.SDO_LRS_TRIG_INS
INSTEAD OF INSERT ON mdsys.user_sdo_lrs_metadata
REFERENCING NEW AS n
FOR EACH ROW
declare
 user_name      varchar2(130);
 stmt           varchar2(2048);
 vcount         INTEGER;
BEGIN


  user_name := sys_context('userenv', 'session_user');
  if ( (instr(:n.table_name, ' ') > 0) OR 
       (instr(:n.table_name, '''') > 0)  ) then
   mderr.raise_md_error('MD', 'SDO', -13223,
               :n.table_name||'.'||:n.column_name);
   end if;
                                                                                
  if ( (instr(:n.column_name, ' ') > 0) OR
   (instr(:n.column_name, '''') > 0)  ) then
   mderr.raise_md_error('MD', 'SDO', -13223,
               :n.table_name||'.'||:n.column_name);
   end if;

/*                                                                                
  stmt :=  'SELECT count(*) FROM MDSYS.SDO_LRS_METADATA_TABLE ' ||
  ' WHERE sdo_owner = '''   || sdo_util.get_quoted_name(user_name) || '''  ' ||
  '  AND  sdo_table_name = '''  || nls_upper(replace(:n.table_name,'''','')) 
   || ''' ' ||
 ' AND  sdo_column_name = ''' || nls_upper(replace(:n.column_name,'''',''))|| ''' ';
  */

  stmt :=  'SELECT count(*) FROM MDSYS.SDO_LRS_METADATA_TABLE ' ||
  ' WHERE sdo_owner = :owner  AND  sdo_table_name =  :tab ' ||
  ' AND  sdo_column_name = :col ';

 EXECUTE IMMEDIATE stmt INTO vcount
    USING  sdo_util.get_quoted_name(user_name), nls_upper(:n.table_name), nls_upper(:n.column_name) ;

  IF vcount = 0 THEN
    INSERT INTO MDSYS.sdo_lrs_metadata_table values
             (sdo_util.get_quoted_name(user_name), nls_upper(:n.table_name), nls_upper(:n.column_name), :n.dim_pos, nls_upper(:n.dim_unit));
  ELSE
   mderr.raise_md_error('MD', 'SDO', -13223,
           user_name||'.'||:n.table_name);
 END IF;
END;
/
show errors;


CREATE OR REPLACE  TRIGGER MDSYS.SDO_LRS_TRIG_DEL
INSTEAD OF DELETE ON mdsys.user_sdo_lrs_metadata
REFERENCING OLD AS n
FOR EACH ROW
declare
 user_name      varchar2(130);
 stmt           varchar2(2048);
 vcount         INTEGER;
BEGIN
 

  user_name := sys_context('userenv', 'session_user');
    DELETE FROM  MDSYS.sdo_lrs_metadata_table
    WHERE SDO_OWNER   = user_name
      AND SDO_TABLE_NAME  = nls_upper(:n.table_name)
      AND SDO_COLUMN_NAME = nls_upper(:n.column_name);
END;
/
show errors;


CREATE  OR REPLACE TRIGGER MDSYS.SDO_LRS_TRIG_UPD
INSTEAD OF UPDATE ON mdsys.user_sdo_lrs_metadata
REFERENCING OLD AS old NEW AS n
FOR EACH ROW
declare
 user_name      varchar2(130);
 stmt           varchar2(2048);
 vcount         INTEGER;
BEGIN
 

   user_name := sys_context('userenv', 'session_user');
    UPDATE MDSYS.sdo_lrs_metadata_table
    SET (SDO_TABLE_NAME, SDO_COLUMN_NAME, SDO_DIM_POS, SDO_DIM_UNIT)  =
     (SELECT nls_upper(:n.table_name), nls_upper(:n.column_name),:n.dim_pos, nls_upper(:n.dim_unit) FROM SYS.DUAL)
    WHERE SDO_OWNER       = sdo_util.get_quoted_name(user_name)
      AND SDO_TABLE_NAME  = nls_upper(:old.table_name)
      AND SDO_COLUMN_NAME = nls_upper(:old.column_name);
END;
/
show errors;

/
show errors;





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


OHA YOOOO