📄 oracle常见问题常用技巧-27.htm
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<body bgcolor="#000000" text="#FFFFFF">
<font color="#009900">Oracle约束管理脚本 </font>
<p> </p>
<p>当前用户下外键的处理 ENABLE或者 DISABLE</p>
<p>v_CursorID := DBMS_SQL.OPEN_CURSOR;<br>
LOOP<br>
FETCH C_CON into R_CON;<br>
notfound:=C_CON%NOTFOUND;<br>
EXIT WHEN notfound;<br>
begin<br>
IF (UPPER(AS_ALTER)='DISABLE' AND R_CON.STATUS='ENABLED' OR<br>
UPPER(AS_ALTER)='ENABLE' AND R_CON.STATUS='DISABLED') THEN<br>
v_StrCon := 'ALTER TABLE '||R_CON.owner||'.'||R_CON.table_name||' '||<br>
UPPER(as_alter) || ' CONSTRAINT '||R_CON.constraint_name;<br>
DBMS_SQL.PARSE( v_CursorID, v_StrCon, DBMS_SQL.V7);<br>
v_FkNum :=v_FkNum+1;<br>
END IF;<br>
EXCEPTION<br>
WHEN OTHERS THEN<br>
v_sqlcode := SQLCODE;<br>
v_sqlerrm := SUBSTR(SQLERRM,1,600);<br>
DBMS_OUTPUT.PUT_LINE('ERROR: '||' '||V_SQLERRM);<br>
-- 找出错误原因<br>
IF (v_sqlcode = -2298) THEN<br>
p_con_err(R_CON.CONSTRAINT_NAME);<br>
END IF;<br>
END;<br>
END LOOP;<br>
CLOSE C_CON;<br>
DBMS_OUTPUT.PUT_LINE('====== Foreign Keys were '||as_alter||', total '||to_char(v_FkNum)||'
=====');<br>
-- 当前用户下触发器的处理 ENABLE或者 DISABLE<br>
FOR T_TRIGGER IN C_TRIGGER LOOP<br>
BEGIN<br>
IF (UPPER(AS_ALTER)='DISABLE' AND T_TRIGGER.STATUS='ENABLED' OR<br>
UPPER(AS_ALTER)='ENABLE' AND T_TRIGGER.STATUS='DISABLED') THEN<br>
v_StrTri := 'ALTER TRIGGER '||T_TRIGGER.TRIGGER_name ||' '||UPPER(as_alter);<br>
DBMS_SQL.PARSE( v_CursorID, v_StrTri, DBMS_SQL.V7);<br>
v_TriNum :=v_TriNum+1;<br>
END IF;<br>
EXCEPTION<br>
WHEN OTHERS THEN<br>
v_sqlcode := SQLCODE;<br>
v_sqlerrm := SUBSTR(SQLERRM,1,600);</p>
<p>DBMS_OUTPUT.PUT_LINE('ERROR: '||V_SQLCODE||' '||V_SQLERRM);<br>
END;<br>
END LOOP;<br>
DBMS_OUTPUT.PUT_LINE('====== Triggers were '||as_alter||', total '||to_char(v_TriNum)||'
=====');<br>
DBMS_SQL.CLOSE_CURSOR(v_CursorID);<br>
ELSE -- 输入参数不正确<br>
DBMS_OUTPUT.PUT_LINE('ERROR:输入参数不正确,参数为ENABLE或者DISABLE!');<br>
END IF;<br>
DBMS_OUTPUT.PUT_LINE('END TIME: '||to_char(sysdate));<br>
END;<br>
/ </p>
<p> </p>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -