Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
Home -> Community -> Usenet -> c.d.o.tools -> Re: Very simple PL/SQL question...
Hi there,
you may use Dynamic SQL to perform this.
This will work for all Oracle versions since 7.x.
The PL/SQL block below uses Dynamic SQL
to disable all constraints in a user schema. Hope
this helps
DECLARE
CURSOR c_constr
IS
SELECT constraint_name, table_name FROM user_constraints; c_ddl NUMBER; v_rows NUMBER; v_stmt VARCHAR2(128); v_const_name user_constraints.constraint_name%TYPE; v_table_name user_constraints.table_name%TYPE; BEGIN c_ddl := DBMS_SQL.OPEN_CURSOR; v_stmt := 'ALTER TABLE :table DISABLE CONSTRAINT :const'; DBMS_SQL.PARSE (c_ddl, v_stmt, DBMS_SQL.NATIVE); OPEN c_constr; LOOP FETCH c_constr INTO v_const_name, v_table_name; EXIT WHEN c_constr%NOTFOUND; DBMS_SQL.BIND_VARIABLE(c_ddl, ':table', v_table_name); DBMS_SQL.BIND_VARIABLE(c_ddl, ':const', v_const_name); v_rows := DBMS_SQL.EXECUTE(c_ddl); END LOOP; DBMS_SQL.CLOSE_CURSOR(c_ddl);