|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Inscription : mars 2008 Messages : 7 ![]() |
Est il possible d'associer un FORALL avec du sql dynamique par exemple j'aimerais faire ceci:
Code :
A priori j'ai une erreur de compilation lorsque je le fais. Est ce un probleme de version d'Oracle? Si oui n'y a t il pas un moyen de contourner cela? Merci d'avance pour vos réponses. |
||
|
|
00
|
|
|
#2 |
![]() ![]() ![]() Inscription : mai 2003 Messages : 6 534 ![]() |
Avec FORALL, l'ordre SQL ne peut être que INSERT, UPDATE ou DELETE.
Lorsqu'il y a production de message d'erreur, merci d'éviter le jeu : devinez laquelle et sur quelle ligne !
__________________
Rédacteur Oracle (Oracle ACE) Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche Je ne réponds pas aux questions techniques par MP Blogs: Forms-PL/SQL-J2EE - Forms Java Beans |
|
|
00
|
|
|
#3 | |
|
Invité de passage
![]() Inscription : mars 2008 Messages : 7 ![]() |
Citation:
http://sheikyerbouti.developpez.com/execute_immediate/ Tu mets cet exemple: FORALL i IN T_Id.first..T_Id.last EXECUTE IMMEDIATE 'UPDATE emp SET sal = sal * 1.1 WHERE empno = :1 RETURNING ename INTO :2' USING T_Id(i) RETURNING BULK COLLECT INTO T_Nom; Que j'ai essayé de reproduire mais cela ne compile, alors je me suis dit que cela vient de la version Oracle(8i)? ET j'aurais voulu trouvé une solution pour éviter d'écrire 36 fois la requete FORALL pour chaque table que je dois deleter !!! Peut etre en avez vous une? |
|
|
|
00
|
|
|
#4 |
![]() ![]() ![]() Inscription : mai 2003 Messages : 6 534 ![]() |
Désolé, je n'avais pas vu le DELETE dans votre exemple.
Il est possible que cette syntaxe ne fonctionne pas en 8i. En tous cas, elle fonctionne parfaitement en 9.2.0
__________________
Rédacteur Oracle (Oracle ACE) Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche Je ne réponds pas aux questions techniques par MP Blogs: Forms-PL/SQL-J2EE - Forms Java Beans |
|
|
00
|
|
|
#5 |
![]() ![]() ![]() Inscription : mai 2003 Messages : 6 534 ![]() |
je note également que c'est la 2ème fois que vous dites : "cela ne compile pas..."
J'imagine qu'il faudra payer pour avoir le message d'erreur...
__________________
Rédacteur Oracle (Oracle ACE) Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche Je ne réponds pas aux questions techniques par MP Blogs: Forms-PL/SQL-J2EE - Forms Java Beans |
|
|
00
|
|
|
#6 | |
|
Invité de passage
![]() Inscription : mars 2008 Messages : 7 ![]() |
Non non pas besoin de payer, voici l'erreur:
Citation:
Je crois que je suis bon à écrire 36 fois le même code pour toute mes tables |
|
|
|
00
|
|
|
#7 |
![]() ![]() ![]() Inscription : mai 2003 Messages : 6 534 ![]() |
Sinon, remplacez FORALL par une boucle For ... Loop standard. Vous perdrez juste en temps d'exécution.
__________________
Rédacteur Oracle (Oracle ACE) Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche Je ne réponds pas aux questions techniques par MP Blogs: Forms-PL/SQL-J2EE - Forms Java Beans |
|
|
00
|
|
|
#8 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
je crains que ce soit pareil pour espérer le voir utiliser les balises CODE et QUOTE
Il ne manquerait pas le LOOP dans son code ? |
|
|
00
|
|
|
#9 |
|
Invité de passage
![]() Inscription : mars 2008 Messages : 7 ![]() |
![]() Justement, le but c'était d'utiliser la vitesse du FORALL. Tant pis Merci de votre réactivité quand même. |
|
|
00
|
|
|
#10 |
|
Expert Confirmé Sénior
![]() ![]() Marius NituIngénieur développement logiciels Inscription : octobre 2007 Messages : 3 320 ![]() |
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com