2016-03-10 2 views
-1
SELECT 'ALTER TABLE ' || uc.table_name || ' DROP CONSTRAINT ' || uc.constraint_name FROM user_constraints uc WHERE constraint_type = 'R'; 

retours à savoir des déclarations que je peux exécuter manuellement comme:Oracle: Exécuter la requête à partir d'une chaîne sélectionnée

ALTER TABLE APPLICATIONUSERROLE DROP CONSTRAINT APP_APPUSERROLE_FK1      
ALTER TABLE APPLICATIONUSERROLE DROP CONSTRAINT USER_APPUSERROLE_FK1      
ALTER TABLE APPLICATIONUSERROLE DROP CONSTRAINT ROLE_APPUSERROLE_FK1 

Que dois-je faire pour les exécuter automatiquement?

Par exemple, j'essayé:

EXECUTE IMMEDIATE (SELECT 'ALTER TABLE ' || uc.table_name || ' DROP CONSTRAINT ' || uc.constraint_name FROM user_constraints uc WHERE constraint_type = 'R'); 

mais c'est ne fonctionne pas du tout jeter quelques erreurs.

Merci d'avance.

Répondre

0
begin 
    for i in (SELECT 'ALTER TABLE ' || uc.table_name || ' DROP CONSTRAINT ' || uc.constraint_name as sql_text FROM user_constraints uc WHERE constraint_type = 'R') 
    loop 
     execute immediate i.sql_text; 
    end loop; 
end; 
+0

merci, mais jette: PLS-00103: Rencontré le symbole "SQL" – Powerslave

+0

J'ai édité le post. try user sql_text alias au lieu de sql – SkyWalker

+0

merci, lance maintenant: PLS-00302: le composant 'sql_text' doit être déclaré;) – Powerslave