MINI MINI MANI MO

Path : /opt/oracle/product/18c/dbhomeXE/md/admin/
File Upload :
Current File : //opt/oracle/product/18c/dbhomeXE/md/admin/sdoepsgl.plb

@@?/rdbms/admin/sqlsessstart.sql
set define off;
set serveroutput on;
declare
  stm VARCHAR2(10000);
  rec_count NUMBER;
begin


  select count(*) into rec_count
  from sys.con$ c, sys.all_users u, sys.cdef$ cd, sys.obj$ o
  where c.name = 'UNIT_OF_MEASURE_FOREIGN_LEGACY' and
        c.owner# = u.user_id and
        u.username = 'MDSYS' and
        c.con# = cd.con# and
        cd.obj# = o.obj# and
        bitand(o.flags, 128) = 0;
  if(rec_count = 0) then
    stm :=
      'ALTER TABLE MDSYS.SDO_UNITS_OF_MEASURE ADD (
        constraint uom_unique1 unique(uom_id, unit_of_meas_type),
        CONSTRAINT UNIT_OF_MEASURE_FOREIGN_LEGACY FOREIGN KEY(LEGACY_CODE) REFERENCES MDSYS.SDO_UNITS_OF_MEASURE(UOM_ID),
        CONSTRAINT UNIT_OF_MEASURE_FOREIGN_UOM FOREIGN KEY(TARGET_UOM_ID) REFERENCES MDSYS.SDO_UNITS_OF_MEASURE(UOM_ID),
        CONSTRAINT UNIT_OF_MEASURE_PRIM PRIMARY KEY(UOM_ID) USING INDEX,
        constraint uom_type_constr check(nls_lower(unit_of_meas_type) in (''area'', ''angle'', ''length'', ''scale'', ''volume'')),
        constraint only_std_target_uoms check(target_uom_id in (9001, 9101, 9201, 10008, 19501)),
        CONSTRAINT FACTOR_B_MUST_BE_POS CHECK(FACTOR_B IS NULL OR FACTOR_B > 0),
        CONSTRAINT FACTOR_C_MUST_BE_POS CHECK(FACTOR_C IS NULL OR FACTOR_C > 0))';
    execute immediate stm;
  end if;
end;
/
begin
  execute immediate 'ALTER TABLE MDSYS.SDO_UNITS_OF_MEASURE drop constraint uom_type_constr';
  execute immediate 'ALTER TABLE MDSYS.SDO_UNITS_OF_MEASURE drop constraint only_std_target_uoms';
  exception
    when others then
    SYS.DBMS_SYSTEM.KSDWRT(SYS.DBMS_SYSTEM.TRACE_FILE,
                           'EXCEPTION[sdoepsgl.sql(' || $$PLSQL_LINE || ')1]: ' || SQLERRM); RAISE;
end;
/
begin
  execute immediate 'ALTER TABLE MDSYS.SDO_UNITS_OF_MEASURE add (
                       constraint uom_type_constr check(nls_lower(unit_of_meas_type) in (''area'', ''angle'', ''length'', ''scale'', ''volume'')),
                       constraint only_std_target_uoms check(target_uom_id in (9001, 9101, 9201, 10008, 19501)))';
end;
/
declare
  stm VARCHAR2(10000);
  rec_count NUMBER;
begin


  select count(*) into rec_count
  from sys.con$ c, sys.all_users u, sys.cdef$ cd, sys.obj$ o
  where c.name = 'PRIME_MERIDIAN_FOREIGN_UOM' and
        c.owner# = u.user_id and
        u.username = 'MDSYS' and
        c.con# = cd.con# and
        cd.obj# = o.obj# and
        bitand(o.flags, 128) = 0;
  if(rec_count = 0) then
    stm :=
      'ALTER TABLE MDSYS.SDO_PRIME_MERIDIANS ADD (
        CONSTRAINT PRIME_MERIDIAN_FOREIGN_UOM FOREIGN KEY(UOM_ID) REFERENCES MDSYS.SDO_UNITS_OF_MEASURE(UOM_ID),
        CONSTRAINT PRIME_MERIDIAN_PRIM PRIMARY KEY(PRIME_MERIDIAN_ID) USING INDEX)';
    execute immediate stm;
  end if;
end;
/
commit;
declare
  stm VARCHAR2(10000);
  rec_count NUMBER;
begin


  select count(*) into rec_count
  from sys.con$ c, sys.all_users u, sys.cdef$ cd, sys.obj$ o
  where c.name = 'ELLIPSOID_FOREIGN_UOM' and
        c.owner# = u.user_id and
        u.username = 'MDSYS' and
        c.con# = cd.con# and
        cd.obj# = o.obj# and
        bitand(o.flags, 128) = 0;
  if(rec_count = 0) then
    stm :=
      'ALTER TABLE MDSYS.SDO_ELLIPSOIDS ADD (
        CONSTRAINT ELLIPSOID_FOREIGN_UOM FOREIGN KEY(UOM_ID) REFERENCES MDSYS.SDO_UNITS_OF_MEASURE(UOM_ID),
        CONSTRAINT ELLIPSOID_PRIM PRIMARY KEY(ELLIPSOID_ID) USING INDEX)';
    execute immediate stm;
  end if;
end;
/
commit;
declare
  stm VARCHAR2(10000);
  rec_count NUMBER;
begin


  select count(*) into rec_count
  from sys.con$ c, sys.all_users u, sys.cdef$ cd, sys.obj$ o
  where c.name = 'ELLIPSOID_FOREIGN_LEGACY' and
        c.owner# = u.user_id and
        u.username = 'MDSYS' and
        c.con# = cd.con# and
        cd.obj# = o.obj# and
        bitand(o.flags, 128) = 0;
  if(rec_count = 0) then
    stm :=
      'ALTER TABLE MDSYS.SDO_UNITS_OF_MEASURE ADD (
        CONSTRAINT ELLIPSOID_FOREIGN_LEGACY FOREIGN KEY(LEGACY_CODE) REFERENCES MDSYS.SDO_ELLIPSOIDS(ELLIPSOID_ID))';
    execute immediate stm;
  end if;
end;
/
commit;
declare
  stm VARCHAR2(10000);
  rec_count NUMBER;
begin


  select count(*) into rec_count
  from sys.con$ c, sys.all_users u, sys.cdef$ cd, sys.obj$ o
  where c.name = 'DATUM_FOREIGN_ELLIPSOID' and
        c.owner# = u.user_id and
        u.username = 'MDSYS' and
        c.con# = cd.con# and
        cd.obj# = o.obj# and
        bitand(o.flags, 128) = 0;
  if(rec_count = 0) then
    stm :=
      'ALTER TABLE MDSYS.SDO_DATUMS ADD (
        CONSTRAINT DATUM_FOREIGN_ELLIPSOID FOREIGN KEY(ELLIPSOID_ID) REFERENCES MDSYS.SDO_ELLIPSOIDS(ELLIPSOID_ID),
        CONSTRAINT DATUM_FOREIGN_MERIDIAN FOREIGN KEY(PRIME_MERIDIAN_ID) REFERENCES MDSYS.SDO_PRIME_MERIDIANS(PRIME_MERIDIAN_ID),
        CONSTRAINT DATUM_PRIM PRIMARY KEY(DATUM_ID) USING INDEX)';
    execute immediate stm;
  end if;
end;
/
commit;
declare
  stm VARCHAR2(10000);
  rec_count NUMBER;
begin


  select count(*) into rec_count
  from sys.con$ c, sys.all_users u, sys.cdef$ cd, sys.obj$ o
  where c.name = 'DATUM_FOREIGN_LEGACY' and
        c.owner# = u.user_id and
        u.username = 'MDSYS' and
        c.con# = cd.con# and
        cd.obj# = o.obj# and
        bitand(o.flags, 128) = 0;
  if(rec_count = 0) then
    stm :=
      'ALTER TABLE MDSYS.SDO_DATUMS ADD (
        CONSTRAINT DATUM_FOREIGN_LEGACY FOREIGN KEY(LEGACY_CODE) REFERENCES MDSYS.SDO_DATUMS(DATUM_ID))';
    execute immediate stm;
  end if;
end;
/
commit;
declare
  stm VARCHAR2(10000);
  rec_count NUMBER;
begin


  select count(*) into rec_count
  from sys.con$ c, sys.all_users u, sys.cdef$ cd, sys.obj$ o
  where c.name = 'COORDINATE_SYSTEM_PRIM' and
        c.owner# = u.user_id and
        u.username = 'MDSYS' and
        c.con# = cd.con# and
        cd.obj# = o.obj# and
        bitand(o.flags, 128) = 0;
  if(rec_count = 0) then
    stm :=
      'ALTER TABLE MDSYS.SDO_COORD_SYS ADD (
        CONSTRAINT COORDINATE_SYSTEM_PRIM PRIMARY KEY(COORD_SYS_ID) USING INDEX)';
    execute immediate stm;
  end if;
end;
/
commit;
declare
  stm VARCHAR2(10000);
  rec_count NUMBER;
begin


  select count(*) into rec_count
  from sys.con$ c, sys.all_users u, sys.cdef$ cd, sys.obj$ o
  where c.name = 'COORD_AXIS_NAME_PRIM' and
        c.owner# = u.user_id and
        u.username = 'MDSYS' and
        c.con# = cd.con# and
        cd.obj# = o.obj# and
        bitand(o.flags, 128) = 0;
  if(rec_count = 0) then
    stm :=
      'ALTER TABLE MDSYS.SDO_coord_axis_names ADD (
        CONSTRAINT COORD_AXIS_NAME_PRIM PRIMARY KEY(COORD_AXIS_NAME_ID) USING INDEX)';
    execute immediate stm;
  end if;
end;
/
commit;
declare
  stm VARCHAR2(10000);
  rec_count NUMBER;
begin


  select count(*) into rec_count
  from sys.con$ c, sys.all_users u, sys.cdef$ cd, sys.obj$ o
  where c.name = 'COORD_AXIS_PRIM' and
        c.owner# = u.user_id and
        u.username = 'MDSYS' and
        c.con# = cd.con# and
        cd.obj# = o.obj# and
        bitand(o.flags, 128) = 0;
  if(rec_count = 0) then
    stm :=
      'ALTER TABLE MDSYS.SDO_coord_axes ADD (
        CONSTRAINT COORD_AXIS_PRIM PRIMARY KEY(COORD_SYS_ID, "ORDER") USING INDEX,
        CONSTRAINT COORD_AXIS_FOREIGN_CS FOREIGN KEY(COORD_SYS_ID) REFERENCES MDSYS.SDO_COORD_SYS(COORD_SYS_ID),
        CONSTRAINT COORD_AXIS_FOREIGN_UOM FOREIGN KEY(UOM_ID) REFERENCES MDSYS.SDO_UNITS_OF_MEASURE(UOM_ID),
        CONSTRAINT COORD_AXIS_FOREIGN_AXIS FOREIGN KEY(COORD_AXIS_NAME_ID) REFERENCES MDSYS.SDO_COORD_AXIS_NAMES(COORD_AXIS_NAME_ID))';
    execute immediate stm;
  end if;
end;
/
commit;
declare
  stm VARCHAR2(10000);
  rec_count NUMBER;
begin


  select count(*) into rec_count
  from sys.con$ c, sys.all_users u, sys.cdef$ cd, sys.obj$ o
  where c.name = 'COORD_REF_SYSTEM_PRIM' and
        c.owner# = u.user_id and
        u.username = 'MDSYS' and
        c.con# = cd.con# and
        cd.obj# = o.obj# and
        bitand(o.flags, 128) = 0;
  if(rec_count = 0) then
    stm :=
      'ALTER TABLE MDSYS.SDO_COORD_REF_SYS ADD (
        CONSTRAINT COORD_REF_SYSTEM_PRIM PRIMARY KEY(SRID) USING INDEX,
        CONSTRAINT COORD_REF_SYS_FOREIGN_CS FOREIGN KEY(COORD_SYS_ID) REFERENCES MDSYS.SDO_COORD_SYS(COORD_SYS_ID),
        CONSTRAINT COORD_REF_SYS_FOREIGN_DATUM FOREIGN KEY(DATUM_ID) REFERENCES MDSYS.SDO_DATUMS(DATUM_ID),
        CONSTRAINT CRS_CHECK_COMPOUND CHECK (
          (IS_VALID = ''FALSE'') OR
          (IS_LEGACY = ''TRUE'') OR
          (coord_ref_sys_kind <> ''COMPOUND'') OR
          (
            (     SOURCE_GEOG_SRID    IS NULL) AND
            (     PROJECTION_CONV_ID  IS NULL) AND
            (NOT  CMPD_HORIZ_SRID     IS NULL) AND
            (NOT  CMPD_VERT_SRID      IS NULL) AND
            (     COORD_SYS_ID        IS NULL) AND
            (     DATUM_ID            IS NULL)
          )
        ),
        CONSTRAINT CRS_CHECK_ENGINEERING CHECK (
          (IS_VALID = ''FALSE'') OR
          (IS_LEGACY = ''TRUE'') OR
          (coord_ref_sys_kind <> ''ENGINEERING'') OR
          (
            (     SOURCE_GEOG_SRID    IS NULL) AND
            (     PROJECTION_CONV_ID  IS NULL) AND
            (     CMPD_HORIZ_SRID     IS NULL) AND
            (     CMPD_VERT_SRID      IS NULL) AND
            (NOT  COORD_SYS_ID        IS NULL) AND
            (NOT  DATUM_ID            IS NULL) AND
            (NOT  GEOG_CRS_DATUM_ID   IS NULL)
          )
        ),
        CONSTRAINT CRS_CHECK_GEOCENTRIC CHECK (
          (IS_VALID = ''FALSE'') OR
          (IS_LEGACY = ''TRUE'') OR
          (coord_ref_sys_kind <> ''GEOCENTRIC'') OR
          (
            (     SOURCE_GEOG_SRID    IS NULL) AND
            (     PROJECTION_CONV_ID  IS NULL) AND
            (     CMPD_HORIZ_SRID     IS NULL) AND
            (     CMPD_VERT_SRID      IS NULL) AND
            (NOT  COORD_SYS_ID        IS NULL) AND
            (NOT  DATUM_ID            IS NULL) AND
            (NOT  GEOG_CRS_DATUM_ID   IS NULL)
          )
        ),
        CONSTRAINT CRS_CHECK_GEOGRAPHIC2D CHECK (
          (IS_VALID = ''FALSE'') OR
          (IS_LEGACY = ''TRUE'') OR
          (coord_ref_sys_kind <> ''GEOGRAPHIC2D'') OR
          (
            (     SOURCE_GEOG_SRID    IS NULL) AND
            (     PROJECTION_CONV_ID  IS NULL) AND
            (     CMPD_HORIZ_SRID     IS NULL) AND
            (     CMPD_VERT_SRID      IS NULL) AND
            (NOT  COORD_SYS_ID        IS NULL) AND
            (NOT  DATUM_ID            IS NULL) AND
            (NOT  GEOG_CRS_DATUM_ID   IS NULL)
          )
        ),
        CONSTRAINT CRS_CHECK_GEOGRAPHIC3D CHECK (
          (IS_VALID = ''FALSE'') OR
          (IS_LEGACY = ''TRUE'') OR
          (coord_ref_sys_kind <> ''GEOGRAPHIC3D'') OR
          (
            (     SOURCE_GEOG_SRID    IS NULL) AND
            (     PROJECTION_CONV_ID  IS NULL) AND
            (     CMPD_HORIZ_SRID     IS NULL) AND
            (     CMPD_VERT_SRID      IS NULL) AND
            (NOT  COORD_SYS_ID        IS NULL) AND
            (NOT  DATUM_ID            IS NULL) AND
            (NOT  GEOG_CRS_DATUM_ID   IS NULL)
          )
        ),
        CONSTRAINT CRS_CHECK_PROJECTED CHECK (
          (IS_VALID = ''FALSE'') OR
          (IS_LEGACY = ''TRUE'') OR
          (coord_ref_sys_kind <> ''PROJECTED'') OR
          (
            (NOT  SOURCE_GEOG_SRID    IS NULL) AND
            (NOT  PROJECTION_CONV_ID  IS NULL) AND
            (     CMPD_HORIZ_SRID     IS NULL) AND
            (     CMPD_VERT_SRID      IS NULL) AND
            (NOT  COORD_SYS_ID        IS NULL) AND
            (     DATUM_ID            IS NULL) AND
            (NOT  GEOG_CRS_DATUM_ID   IS NULL)
          )
        ),
        CONSTRAINT CRS_CHECK_VERTICAL CHECK (
          (IS_VALID = ''FALSE'') OR
          (IS_LEGACY = ''TRUE'') OR
          (coord_ref_sys_kind <> ''VERTICAL'') OR
          (
            (     SOURCE_GEOG_SRID    IS NULL) AND
            (     PROJECTION_CONV_ID  IS NULL) AND
            (     CMPD_HORIZ_SRID     IS NULL) AND
            (     CMPD_VERT_SRID      IS NULL) AND
            (NOT  COORD_SYS_ID        IS NULL) AND
            (NOT  DATUM_ID            IS NULL) AND
            (NOT  GEOG_CRS_DATUM_ID   IS NULL)
          )
        )
      )';
    execute immediate stm;

    stm :=
      'ALTER TABLE MDSYS.SDO_SRIDS_BY_URN ADD (
        foreign key (srid) references mdsys.sdo_coord_ref_sys (srid))';
    execute immediate stm;
  end if;
end;
/
commit;
select 'commit 49' from SYS.DUAL;
declare
  stm VARCHAR2(10000);
  rec_count NUMBER;
begin


  select count(*) into rec_count
  from sys.con$ c, sys.all_users u, sys.cdef$ cd, sys.obj$ o
  where c.name = 'COORD_OP_METHOD_PRIM' and
        c.owner# = u.user_id and
        u.username = 'MDSYS' and
        c.con# = cd.con# and
        cd.obj# = o.obj# and
        bitand(o.flags, 128) = 0;
  if(rec_count = 0) then
    stm :=
      'ALTER TABLE MDSYS.SDO_COORD_OP_METHODS ADD (
        CONSTRAINT COORD_OP_METHOD_PRIM PRIMARY KEY(COORD_OP_METHOD_ID) USING INDEX)';
    execute immediate stm;
  end if;
end;
/
commit;
CREATE OR REPLACE TRIGGER
  MDSYS.SDO_COORD_OP_METHODS_TRIGGER
BEFORE
  INSERT OR
  UPDATE OR
  DELETE
ON
  MDSYS.SDO_COORD_OP_METHODS
FOR EACH ROW
BEGIN
  MDSYS.MDERR.RAISE_MD_ERROR('MD', 'SDO', -13199, 'This cannot change the actual implementation status of a method.');
END;
/
CREATE OR REPLACE TRIGGER
  MDSYS.SDO_COORD_OPS_TRIGGER
BEFORE
  INSERT OR
  UPDATE OR
  DELETE
ON
  MDSYS.SDO_COORD_OPS
FOR EACH ROW
BEGIN
  MDSYS.sdo_cs.sdo_cs_context_invalidate;
END;
/
commit;
declare
  stm VARCHAR2(10000);
  rec_count NUMBER;
begin


  select count(*) into rec_count
  from sys.con$ c, sys.all_users u, sys.cdef$ cd, sys.obj$ o
  where c.name = 'COORD_OPERATION_FOREIGN_SOURCE' and
        c.owner# = u.user_id and
        u.username = 'MDSYS' and
        c.con# = cd.con# and
        cd.obj# = o.obj# and
        bitand(o.flags, 128) = 0;
  if(rec_count = 0) then
    stm :=
      'ALTER TABLE MDSYS.SDO_COORD_OPS ADD (
        CONSTRAINT COORD_OPERATION_FOREIGN_SOURCE FOREIGN KEY(SOURCE_SRID) REFERENCES MDSYS.SDO_COORD_REF_SYS(SRID),
        CONSTRAINT COORD_OPERATION_FOREIGN_TARGET FOREIGN KEY(TARGET_SRID) REFERENCES MDSYS.SDO_COORD_REF_SYS(SRID),
        CONSTRAINT COORD_OPERATION_FOREIGN_METHOD FOREIGN KEY(COORD_OP_METHOD_ID) REFERENCES MDSYS.SDO_COORD_OP_METHODS(COORD_OP_METHOD_ID),
        CONSTRAINT COORD_OP_PRIM PRIMARY KEY(COORD_OP_ID) USING INDEX)';
    execute immediate stm;
  end if;
end;
/
commit;
@@sdoepsgl2.plb
@?/rdbms/admin/sqlsessend.sql

OHA YOOOO