Documentation PostgreSQL 7.4.29 | ||||
---|---|---|---|---|
Pr�c�dent | Arri�re rapide | Chapitre 37. PL/pgSQL - SQL Procedural Language | Avance rapide | Suivant |
Utilisez l'instruction RAISE pour rapporter des messages et lever des erreurs.
RAISE niveau 'format' [, variable [, ...]];
Possible levels are DEBUG, LOG, INFO, NOTICE, WARNING, and EXCEPTION. EXCEPTION raises an error and aborts the current transaction; the other levels only generate messages of different priority levels. Whether messages of a particular priority are reported to the client, written to the server log, or both is controlled by the log_min_messages and client_min_messages configuration variables. See Section 16.4 for more information. Les niveaux possibles sont DEBUG LOG, INFO, NOTICE, WARNING et EXCEPTION. EXCEPTION l�ve une erreur et interrompt la transaction courante). Les autres niveaux ne font que g�n�rer des messages aux diff�rents niveaux de priorit�. Quand les messages d'une priorit� particuli�re sont indiqu�s par le client, �crit dans les traces du serveur, ou � la fois contr�l� par les variables de configuration log_min_messages et client_min_messages. Voir Section 16.4 pour plus d'informations.
Au sein de la cha�ne de formatage, % est remplac� par la repr�sentation de la cha�ne argument optionnelle suivante. �crivez %% pour signifier un caract�re %. Notez que les arguments optionnels doivent actuellement �tre de simples variables, non des expressions et que le format doit �tre une simple cha�ne de caract�res.
Dans cet exemple, la valeur de v_job_id remplacera le % dans la cha�ne.
RAISE NOTICE ''Calling cs_create_job(%)'', v_job_id;
Cet exemple interrompra la transaction avec le message d'erreur donn�.
RAISE EXCEPTION ''Inexistent ID --> %'', user_id;
PostgreSQL n'a pas un mod�le d'exceptions tr�s malin. Lorsque l'analyseur, planificateur/optimiseur ou ex�cuteur d�cide qu'une instruction ne peux pas continuer � �tre trait�e, l'enti�re transaction s'interrompt et le syst�me renvient � la boucle principale pour re�evoir la prochaine commande de l'application client.
Il est possible de faire un crochet par le m�canisme d'erreurs pour examiner ce qui se passe. Mais actuellement il est impossible de dire ce qui a caus� r�ellement l'interruption (erreur de format de type de donn�es, erreur de virgule flottante, erreur de syntaxe, etc.). Et il est possible que le serveur de base de donn�es soit dans un �tat inconscient � ce point, et que renvoyer � l'ex�cuteur sup�rieur ou traiter d'autres commandes puisse corrompre la base de donn�es enti�re.
Ainsi, la seule chose que PL/pgSQL fait actuellement quand il rencontre une interruption dans une proc�dure fonction ou d�clencheur est d'ajouter quelques champs au message indiquant � quelle fonction et � quel endroit (num�ro de ligne et type d'instruction) l'erreur s'est produite. L"rreur stoppe � chaque fois l'ex�cution de la fonction.
Pr�c�dent | Sommaire | Suivant |
Curseurs | Niveau sup�rieur | Proc�dures D�clencheur |