SQL> SET SERVEROUTPUT ON; SQL> ALTER SESSION SET NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS'; SQL> EXEC P_ALTERCONS(as_alter); 其中,参数as_alter只能是“ENABLE”或者“DISABLE”,否则程序提示错误。当参数为“ENABLE”时,表示将当前模式下所有的外键和触发器打开,相反“DISABLE”就是将当前模式下所有的外键和触发器关闭。
附存储过程脚本:
CREATE OR REPLACE PROCEDURE P_ALTERCONS( AS_ALTER VARCHAR2) AS v_CursorID INTEGER; v_StrCon VARCHAR2(300); v_StrTri VARCHAR2(300); v_FkNum NUMBER :=0; v_TriNum NUMBER :=0; v_sqlcode NUMBER; v_sqlerrm VARCHAR2(600); CURSOR C_CON IS SELECT * FROM USER_CONSTRAINTS WHERE CONSTRAINT_TYPE='R'; R_CON C_CON%ROWTYPE; CURSOR c_trigger IS SELECT TRIGGER_NAME,STATUS FROM user_triggers; notfound BOOLEAN; BEGIN DBMS_OUTPUT.PUT_LINE('BEGIN TIME: '||to_char(sysdate)); 判断输入参数是否为DISABLE或者是ENABLE,如果是的话,就继续处理,否则退出过程,给出提示 IF (UPPER(AS_ALTER) = 'DISABLE' OR UPPER(AS_ALTER) = 'ENABLE') THEN OPEN C_CON;