|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre éclairé
![]() |
Bonjour
j'ai fait un INSERT qui se base sur un SELECT dynamique : Code :
Comment faire un commit de mon instruction sans forcément committer l'écran ? Merci |
||
|
|
00
|
|
|
#2 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
non mais pour faire un INSERT tu dois créer un nouvel enregistrement en mettant pour chaque champs le résultat de la colonne correspondante. Là tu ne modifie pas le bloc donc c'est normal qu'il te mette ce message. Mais pourquoi tu n'utilises pas EXECUTE IMMEDIATE ?
|
|
|
00
|
|
|
#3 | |
|
Membre éclairé
![]() |
Citation:
je fais execute immediate mon ordre insert et c'est bon ? le commit se fait comment ? |
|
|
|
00
|
|
|
#4 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
il y a tuto sur EXECUTE IMMEDIATE sur le site
|
|
|
00
|
|
|
#5 |
|
Membre Expert
![]() Philippe CHIRCOPChef de projet Inscription : juin 2007 Messages : 1 109 ![]() |
Si tu fais COMMIT_FORM et que tu as modifié la BDD par des ordres SQL directs (ex INSERT, UPDATE etc) sans passer par des BLOCKS/ITEM , Forms croit que tu n'as rien modifié.
MAis de mémoire, le commit se fait quand même=> ne pas tenir compte du message ! |
|
|
00
|
|
|
#6 | |
|
Membre éclairé
![]() |
Citation:
en attendant, je vais lire le tuto... |
|
|
|
00
|
|
|
#7 |
|
Membre éclairé
![]() |
ORAFRANCE es-tu sûr que le EXECUTE IMMEDIATE est possible sous Forms ?
Je mets le lien du tuto pour les prochains lecteurs : Lien TUTO execute immediate |
|
|
00
|
|
|
#8 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
non
mais si c'est pas possible tu crées une procédure stockée plutôt qu'une procédure dans la forms... PL/SQL, lui, fonctionne parfaitement |
|
|
00
|
|
|
#9 | |||
|
Membre Expert
![]() Philippe CHIRCOPChef de projet Inscription : juin 2007 Messages : 1 109 ![]() |
On peut utiliser "FORMS_DDL"
Syntax Citation:
Code :
|
|||
|
|
00
|
|
|
#10 |
|
Membre Expert
![]() Inscription : avril 2005 Messages : 1 672 ![]() |
Sous forms, quand je n'utilise pas une procédure stockée avec EXECUTE IMMEDIATE, j'utilise le packages EXEC_SQL qui permet de construire des requête dynamiques.
Je ne sais pas si ce dernier supporte les requêtes DDL.
__________________
Modérateur des forums Oracle et Langage SQL Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum |
|
|
00
|
|
|
#11 | ||
|
Expert Confirmé
![]() Chef de projet en SSII Inscription : janvier 2004 Messages : 2 866 ![]() |
Non :
- il n'est pas possible d'utiliser execute immediate dans forms - forms_ddl sert à executer des instructions... DDL, pour faire du SQL dynamique avec forms c'est exec_sql (voire dbms_sql) Pour que le message ne s'affiche pas il suffit de faire : Code :
__________________
Un problème sans solution est un problème mal posé Merci de poser vos questions sur le forum, je ne réponds pas aux questions posées par MP. |
||
|
|
00
|
|
|
#12 | ||
|
Membre Expert
![]() Philippe CHIRCOPChef de projet Inscription : juin 2007 Messages : 1 109 ![]() |
1) Forms_DDl marche aussi pour du DML (voir HELP FORMS)
Code :
2) Modifier le level n'empeche pas l'affichage du message (il est moins visible, c'est tout !) |
||
|
|
00
|
|
|
#13 | |||
|
Expert Confirmé
![]() Chef de projet en SSII Inscription : janvier 2004 Messages : 2 866 ![]() |
Citation:
Citation:
Citation:
__________________
Un problème sans solution est un problème mal posé Merci de poser vos questions sur le forum, je ne réponds pas aux questions posées par MP. |
|||
|
|
00
|
|
|
#14 |
|
Membre Expert
![]() Philippe CHIRCOPChef de projet Inscription : juin 2007 Messages : 1 109 ![]() |
Le problème, c'est que si tu as une autre erreur (qui n'est pas celle dont on parle) plus grave (on peut tout imaginer), tu n'auras pas de message !
Avce la solution du ON_ERROR, si ! |
|
|
00
|
|
|
#15 | |
|
Expert Confirmé
![]() Chef de projet en SSII Inscription : janvier 2004 Messages : 2 866 ![]() |
Citation:
__________________
Un problème sans solution est un problème mal posé Merci de poser vos questions sur le forum, je ne réponds pas aux questions posées par MP. |
|
|
|
00
|
|
|
#16 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
je confirme en effet que la solution de Plainer fonctionne parfaitement, je l'ai moi-même utiliser dans mon ancienne vie de développeur Forms
|
|
|
00
|
|
|
#17 |
|
Membre Expert
![]() Philippe CHIRCOPChef de projet Inscription : juin 2007 Messages : 1 109 ![]() |
J'ai retesté votre solution, ca marche. Cependant, j'ai des routines que j'utilise depuis des années (10 ? 12) et qui emploient cette technique (surcharge de on_error), documentée par ORACLE. AVANTAGE : -on peut voir les autres messages de meme niveau - On peut traduire les messages (applications multi-langues) INCONVENIENT : utilisation d'un trigger 'ON_XXXXXX' |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com