Erreur dans fonction stocké PL/SQL [Oracle 10.2] - SQL/NoSQL - Programmation
Marsh Posté le 25-01-2007 à 10:37:05
Déjà, il manque un END à ton fonction (y'a un BEGIN, mais pas de END correspondant).
Ceci dit, vu l'erreur, ça doit pas venir de là.
Marsh Posté le 25-01-2007 à 10:37:49
J'ai mis que le début de la fonction ou apparait l'erreur.
Si je met en commentaire la ligne EXECUTE IMMEDIATE, je n'ai pas de problème.
Marsh Posté le 26-01-2007 à 14:04:03
je ne pense pas que tu puisses supprimer des contraintes en étant en select sur la table. ceci dit je n'en suis pas sûr.
essaie plutôt de stocker ca dans un tableau, de dérouler le tableau et de supprimer les contraintes.
Marsh Posté le 26-01-2007 à 15:32:36
Sans conviction :tu pars sur un "FOR c IN" et tu y fais référence par contrainte.owner au lieu de c.owner.
Ensuite tu l'utilises à partir d'ou cette fonction ? Pourquoi ne pas faire une procédure qui semble plus approprié à mon goût ?
Et donc à tout hasard, n'essayerais tu pas de lancer cette fonction depuis un ordre SQL ? Si oui, peut tu tester si elle marche depuis un bloc PL/SQL anonyme ? Micii ! Si non, ben je continue à chercher !
Marsh Posté le 26-01-2007 à 20:18:32
darkfrost a écrit : Sans conviction :tu pars sur un "FOR c IN" et tu y fais référence par contrainte.owner au lieu de c.owner. |
Merci pour ton aide. J'ai finalement trouvé la cause du bug : on ne peut pas lancer en SQL une procédure PL/SQL qui effectue des opérations DDL CREATE, ALTER... ou COMMIT (le EXECUTE IMMEDIATE fait un COMMIT implicite). Il faut impérativement passé par une commande PL/SQL genre BEGIN retour := debug(...); END;
Marsh Posté le 25-01-2007 à 10:34:50
Bonjour,
J'ai une erreur dasn un fonction stockée :
J'ai l'erreur ;
Je ne comprends pas pourquoi. Merci pour votre aide.
Message édité par pegase06 le 25-01-2007 à 10:58:09