ORACLE存储过程 练习系列三 失效或者生效指定表的外键

create or replace procedure P_CHANGE_FK_STATUS(IN_TABLE in varchar2,IN_TYPE IN VARCHAR2,IN_ACTION IN VARCHAR2) is

--失效或者生效指定表的外键

-- IN_table :表名

-- IN_TYPE :必须为 R 代表外键

-- IN_ACTION :DISABLE 或者 ENABLE

V_TABLE VARCHAR2(30);

V_ACTION VARCHAR2(10);

V_SQL VARCHAR2(200) ;

V_FK  VARCHAR2(60);  

begin 

      V_TABLE:=substr(IN_TABLE,2,length(IN_TABLE)-2);

      V_ACTION:=substr(IN_ACTION,2,length(IN_ACTION)-2);

      --查询外键名称

      V_SQL :='SELECT constraint_name FROM USER_CONSTRAINTS WHERE CONSTRAINT_TYPE=  '|| IN_TYPE||  '    and  table_name='||IN_TABLE;

      DBMS_OUTPUT.PUT_LINE('V_SQL: ' || V_SQL);

      execute immediate V_SQL into V_FK;

      v_sql:='alter table '||  V_TABLE  ||'  '||V_ACTION ||'  constraint '||V_FK;  

      DBMS_OUTPUT.PUT_LINE('V_SQL: ' || V_SQL);

      execute immediate  v_sql;

end P_CHANGE_FK_STATUS;

 

 执行

你可能感兴趣的:(oracle存储过程)