|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 | ||
|
Invité régulier
![]() Inscription : mars 2011 Messages : 48 ![]() |
Bonjour mes amis ,
je vous sollicite votre aide SVP en fait j'ai une procédure plsql Code :
je veux si jamais une exception s'est montée pouvoir effectuer un rollback et annuler l'insertion comment dois je faire cela ?? |
||
|
|
00
|
|
|
#2 | ||
|
Membre du Club
![]() Inscription : décembre 2010 Messages : 190 ![]() |
Code :
|
||
|
|
00
|
|
|
#3 |
|
Expert Confirmé Sénior
![]() ![]() Marius NituIngénieur développement logiciels Inscription : octobre 2007 Messages : 3 311 ![]() |
D'une manière générale ne fait pas de commit dans votre procédure.
Dans votre procédure si une erreur arrive rien n'est inséré dans la table donc faire rollback ne sert strictement à rien. |
|
|
10
|
|
|
#4 |
|
Invité régulier
![]() Inscription : mars 2011 Messages : 48 ![]() |
mais si je commite pas donc je vais pas trouver mes données insérées dans la table non ?!!!!
|
|
|
00
|
|
|
#5 |
|
Expert Confirmé Sénior
![]() ![]() Marius NituIngénieur développement logiciels Inscription : octobre 2007 Messages : 3 311 ![]() |
Faite le commit à l’extérieur de votre procédure.
|
|
|
10
|
|
|
#6 |
![]() Inscription : décembre 2002 Messages : 2 385 ![]() |
Je suis assez d'accord avec ça.
Si une procédure provoque une fin de transaction, il faut vraiment le documenter de manière explicite. Aïe aïe aïe, je n'ose pas imaginer toutes les mauvaises interprétations qui risquent d'être faites ! Du genre "en PL/SQL, dès qu'il y a une erreur, ça fait un ROLLBACK".
__________________
Consultant / formateur Oracle indépendant Certifié OCP 10g et 11g, sécurité 11g |
|
|
10
|
|
|
#7 | |
|
Expert Confirmé Sénior
![]() ![]() Marius NituIngénieur développement logiciels Inscription : octobre 2007 Messages : 3 311 ![]() |
Citation:
|
|
|
|
10
|
|
|
#8 | |||||||||
|
Membre Expert
![]() Inscription : août 2008 Messages : 1 271 ![]() |
Mnitu je suis tout à fait d'accord avec tes premières réponses mais je trouve la doc derrière ton lien obscure...
Mais c'est peut être juste un problème de compréhension de l'anglais... Citation:
Code :
Citation:
Donc il me semble douteux que certains "host environment" se comporte différemment des environements de développement... A moins qu'il ne fasse simplement référence à : Code :
Idem cette phrase me semble étrange : Citation:
Code :
|
|||||||||
|
|
10
|
|
|
#9 |
![]() Inscription : décembre 2002 Messages : 2 385 ![]() |
Je suis complètement d'accord : les passages que vous avez relevés en gras sont pour moi aussi incompréhensibles, tellement ils sont contraires à ce qu'on constate dans la pratique !
(Par contre, dans votre test en SQL pur, il y a forcément une seule transaction puisqu'aucune instruction ne sépare vos 2 INSERT).
__________________
Consultant / formateur Oracle indépendant Certifié OCP 10g et 11g, sécurité 11g |
|
|
20
|
|
|
#10 |
|
Membre Expert
![]() Inscription : août 2008 Messages : 1 271 ![]() |
Effectivement il n'y a qu'une seule transaction, merci Pomalaix pour la précision.
Et je suis rassuré de ne pas être le seul à trouver ce passage à minima très mal expliqué. |
|
|
00
|
|
|
#11 | ||
|
Expert Confirmé Sénior
![]() ![]() Marius NituIngénieur développement logiciels Inscription : octobre 2007 Messages : 3 311 ![]() |
Mais, non. Lisez aussi Statement-Level Rollback. Analysez ce code.
Code :
|
||
|
|
00
|
|
|
#12 | ||
|
Expert Confirmé Sénior
![]() ![]() Marius NituIngénieur développement logiciels Inscription : octobre 2007 Messages : 3 311 ![]() |
Et encore un test
Code :
|
||
|
|
20
|
|
|
#13 |
|
Membre Expert
![]() Yannick Ingénieur Etudes & Developpements Inscription : février 2006 Messages : 1 125 ![]() |
1?
__________________
Dans la connaissance du monde, ceux qui ne savent rien en savent toujours autant que ceux qui n'en savent pas plus qu'eux. (Pierre Dac) |
|
|
00
|
|
|
#14 | ||
|
Expert Confirmé Sénior
![]() ![]() Marius NituIngénieur développement logiciels Inscription : octobre 2007 Messages : 3 311 ![]() |
Code :
|
||
|
|
00
|
|
|
#15 | ||||
|
Membre Expert
![]() Inscription : août 2008 Messages : 1 271 ![]() |
Citation:
Je trouve quand même assez bizarre de vouloir préciser un comportement avec gestion d'erreur non raise en précisant : Citation:
Citation:
Bon comme souvent tom kyte est bien plus didactique dans sa réponse : http://asktom.oracle.com/pls/asktom/...43818437682131 Citation:
|
||||
|
|
10
|
|
|
#16 |
|
Expert Confirmé Sénior
![]() ![]() Marius NituIngénieur développement logiciels Inscription : octobre 2007 Messages : 3 311 ![]() |
J'ai fini par trouver sur internet Procedure-Level Atomicity dans Expert Oracle Database par Tom Kyte.
|
|
|
20
|
|
|
#17 |
|
Invité régulier
![]() Inscription : mars 2011 Messages : 48 ![]() |
tout d'abord je vous remercie tous pour votre collaboration ,
en fait je vais essayer de vous expliquer un peu mon probléme , j'ai des procedures comme je vous ai déjà montré dans ma premiére intervention mais je veux en fait si jamais une erreur est survenue dans la procédure pouvoir afficher un message d'erreur et annuler la transaction courante ! comment je peux faire çà au niveau de ma procédure plsql |
|
|
01
|
|
|
#18 |
![]() ![]() |
Vous n'avez rien à faire, c'est déjà ce que fait Oracle.
__________________
Email : http://scr.im/waldar |
|
00
|
|
|
#19 |
|
Invité régulier
![]() Inscription : mars 2011 Messages : 48 ![]() |
effectivement et tout à fait d'accord mais moi je veux pouvoir afficher l'erreur lors de l'appel de mes procédures au niveau de mon application web
|
|
|
00
|
|
|
#20 |
|
Expert Confirmé Sénior
![]() ![]() Marius NituIngénieur développement logiciels Inscription : octobre 2007 Messages : 3 311 ![]() |
Exécutez la procédure et s'il y a une erreur affichez-la.
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com