|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Membre confirmé
![]() Inscription : décembre 2002 Messages : 450 ![]() |
Hello tout le monde,
J'ai un bloc anonyme dans un fichier .SQL appelé par SQL*Plus: Je souhaiterai jeter une exception de la procédure ma_procedure et l'intercepter dans le bloc anonyme. Avec deux procédures stockées dans un même package et l'exception déclarée dans l'entête, les deux procédures reconnaissent l'exception commune, comme on peut le voir ici : http://www.adp-gmbh.ch/ora/plsql/exception.html J'ai testé à tout hasard : Code :
Code :
Ce qui est normal car l'exception CODE_RETOUR_EXCEPTION n'est pas commune au bloc anonyme et à la procédure stockée Dans ce cas, comment faire pour jeter l'exception d'une procédure à un bloc anonyme ? |
||||
|
|
00
|
|
|
#2 | ||||||
|
Membre actif
![]() Inscription : février 2007 Messages : 167 ![]() |
Salut,
Tu peux déclarer tes exceptions communes dans un package et les utiliser dans une procédure ou un bloc anonyme. Etape 1: Déclarer les exceptions Code :
Code :
Code :
|
||||||
|
|
00
|
|
|
#3 | ||
|
Expert Confirmé Sénior
![]() ![]() Marius NituIngénieur développement logiciels Inscription : octobre 2007 Messages : 3 311 ![]() |
Utilisez Raise_Application_Error.
Par ailleurs ce code Code :
|
||
|
|
11
|
|
|
#4 | ||
|
Membre actif
![]() Inscription : février 2007 Messages : 167 ![]() |
Il faut lire le commentaire dans le code.
Code :
A part ça : Le raise_application_error demande un numéro d'exception. On a accès à la tranche -20000 à -20999. On peut se repasser l'exception d'un programme à l'appelant si on se définit une nomenclature des erreurs en fonction des numéros. Avec 1000 exceptions différentes il y a de quoi faire. MAIS il faut savoir à quoi correspond la -20001, la -20002 etc... ET ne pas réutiliser les numéros à tord et à travers dans les programmes. Si l'idée est de maintenir quelque part un référentiel centralisé des exceptions qu'on puisse utiliser dans l'application le package avec des exceptions nommées en clair est intéressant. Pozzo |
||
|
|
21
|
|
|
#5 | ||
|
Invité de passage
![]() Inscription : janvier 2007 Messages : 3 ![]() |
Tu as catché l'exception dans le code de ta fonction :
Code :
Dans le code que j'ai recopié ci-dessus (cf ton premier post). Tu écrit un message et ne fait rien ensuite puisque tu as traité l'exception dans ta procédure ma_procedure. |
||
|
|
01
|
Copyright © 2000-2012 - www.developpez.com