【发布时间】:2015-12-09 12:19:03
【问题描述】:
我已经创建了用于在多个表上创建 unique index 的 SP。
现在我需要为此创建 Try-catch(异常处理),例如未创建的 incase 索引应该是 catch ....
例如,我有 200 个表,只有 1 个表出错,那么应该使用索引创建 199 个表,并且捕获日志具有那个错误的表名。
请帮忙。
DECLARE
CURSOR C_TABLE IS
SELECT INPUT_TABLE,HISTORY_TABLE FROM FUNCTIONS WHERE TARGET_SYS IN ('ABC','DEC') AND ACTIVE_FLAG='Y';
SQL_CREATE_INX VARCHAR2(200);
SQL_TABLE_NAME VARCHAR2(200);
BEGIN
-- INPUT TABLE
FOR I IN C_TABLE
LOOP
SQL_CREATE_INX:='CREATE UNIQUE INDEX CLM1.AUDIT_SUB_SITE_INX ON '||I.INPUT_TABLE||' (AUDIT_NBR , SUB_AUDIT_NBR , STATE) ';
SQL_TABLE_NAME:=I.INPUT_TABLE;
EXECUTE IMMEDIATE SQL_CREATE_INX;
DBMS_OUTPUT.PUT_LINE('INDEX DONE : '||SQL_TABLE_NAME);
END LOOP;
DBMS_OUTPUT.PUT_LINE('INDEXES CREATED FOR ALL INPUT TABLES');
-- OUTPUT TABLE
FOR H IN C_TABLE
LOOP
SQL_CREATE_INX:='CREATE UNIQUE INDEX CLM1.AUDIT_SUB_SITE_INX ON '||H.HISTORY_TABLE||' (AUDIT_NBR , SUB_AUDIT_NBR , STATE) ';
SQL_TABLE_NAME:=H.HISTORY_TABLE;
EXECUTE IMMEDIATE SQL_CREATE_INX;
DBMS_OUTPUT.PUT_LINE('INDEX DONE : '||SQL_TABLE_NAME);
END LOOP;
DBMS_OUTPUT.PUT_LINE('INDEXES CREATED FOR ALL OUTPUT TABLES');
END;
【问题讨论】:
标签: sql oracle stored-procedures plsql