123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- -- Licensed Materials - Property of IBM
- --
- -- BI and PM: CM
- --
- -- (C) Copyright IBM Corp. 2008, 2009
- --
- -- US Government Users Restricted Rights - Use, duplication or disclosure
- -- restricted by GSA ADP Schedule Contract with IBM Corp.
- -- Copyright (C) 2008 Cognos ULC, an IBM Company. All rights reserved.
- -- Cognos (R) is a trademark of Cognos ULC, (formerly Cognos Incorporated).
- create or replace procedure makeCSConsistent as
- strsql varchar2(500);
- cursor tables is
- SELECT a.TABLE_NAME FROM USER_TAB_COLS a, USER_TABLES b WHERE a.COLUMN_NAME = 'CMID' AND a.TABLE_NAME like 'CM%' AND a.TABLE_NAME=b.TABLE_NAME ORDER BY a.TABLE_NAME ASC;
- util_cursor integer;
- num integer;
-
- begin
- util_cursor := DBMS_SQL.OPEN_CURSOR;
- FOR tables_row in tables LOOP
- strsql := 'delete from '||tables_row.TABLE_NAME||' where CMID not in (select CMID from CMOBJECTS)';
- DBMS_SQL.PARSE(util_cursor, strsql, DBMS_SQL.NATIVE);
- num := DBMS_SQL.EXECUTE(util_cursor);
- END LOOP;
- strsql := 'insert into CMOBJNAMES (CMID, LOCALEID, MAPDLOCALEID, ISDEFAULT, NAME) select CMID, 24, 24, 1, concat( ''REPAIRED BY CONSISTENCY CHECK '', RAWTOHEX(SYS_GUID())) from CMOBJECTS where CMID not in (select CMID from CMOBJNAMES)';
- DBMS_SQL.PARSE(util_cursor, strsql, DBMS_SQL.NATIVE);
- num := DBMS_SQL.EXECUTE(util_cursor);
- strsql := 'insert into CMPOLICIES (CMID) select CMID from CMOBJECTS where CMID not in (select CMID from CMPOLICIES)';
- DBMS_SQL.PARSE(util_cursor, strsql, DBMS_SQL.NATIVE);
- num := DBMS_SQL.EXECUTE(util_cursor);
- strsql := 'insert into CMSTOREIDS (CMID, STOREID) select CMID, SUBSTR(''i00000000000000000000000000000000'',1,33 - LENGTH(RTRIM(CAST(CMID AS CHAR(10))))) || RTRIM(CAST(CMID AS CHAR(10))) from CMOBJECTS where CMID not in (select CMID from CMSTOREIDS)';
- DBMS_SQL.PARSE(util_cursor, strsql, DBMS_SQL.NATIVE);
- num := DBMS_SQL.EXECUTE(util_cursor);
-
- strsql := 'update CMSTOREIDS set STOREID = NULL where UPPER(STOREID) in (select STOREID from (select b.CMID, UPPER(b.STOREID) as STOREID from CMSTOREIDS b) group by STOREID having COUNT(CMID) > 1)';
- DBMS_SQL.PARSE(util_cursor, strsql, DBMS_SQL.NATIVE);
- num := DBMS_SQL.EXECUTE(util_cursor);
-
- strsql := 'update CMSTOREIDS set STOREID = SUBSTR(''i00000000000000000000000000000000'',1,33 - LENGTH(RTRIM(CAST(CMID AS CHAR(10))))) || RTRIM(CAST(CMID AS CHAR(10))) where CMID in (select CMID from CMSTOREIDS where STOREID is null)';
- DBMS_SQL.PARSE(util_cursor, strsql, DBMS_SQL.NATIVE);
- num := DBMS_SQL.EXECUTE(util_cursor);
- DBMS_SQL.CLOSE_CURSOR(util_cursor);
- exception
- when others then
- if DBMS_SQL.IS_OPEN(util_cursor) then
- DBMS_SQL.CLOSE_CURSOR(util_cursor);
- end if;
- raise_application_error(-20000, 'Unknown Exception Raised: '||sqlcode||' '||sqlerrm);
- end;
- /
- exec makeCSConsistent;
- drop procedure makeCSConsistent;
|