Oracle PL/SQL


précédentsommairesuivant

7. Le paquetage DBMS_OUTPUT

Les procédures de ce paquetage vous permettent d'écrire des lignes dans un tampon depuis un bloc PL/SQL anonyme, une procédure ou un déclencheur.

Le contenu de ce tampon est affiché à l'écran lorsque le sous-programme ou le déclencheur est terminé.

L'utilité principale est d'afficher à l'écran des informations de trace ou de débogage

La taille maximum du tampon est de un million de caractères
La taille maximum d'une ligne est de 255 caractères

La capacité maximum d'une ligne étant de 255 caractères, voyez la procédure DEBUG, présentée au chapitre Fonctions et procédure, qui permet de s'affranchir de cette limitation



Fonctions et procédures du paquetage

  • DBMS_OUTPUT.ENABLE ( taille_tampon IN INTEGER DEFAULT 20000)

Cette procédure permet d'initialiser le tampon d'écriture et d'accepter les commandes de lecture et d'écriture dans ce tampon.

taille_tampon représente la taille maximum en octets allouée au tampon.
Les valeurs doivent être indiquées dans une plage de valeur allant de 2000 (minimum) et 1 million (maximum). Sa valeur par défaut est 20000.

Exceptions générées
ORA-20000: Buffer overflow, limit of (buffer_limit) bytes.
ORU-10027:

  • DBMS_OUTPUT.DISABLE

Cette procédure désactive les appels de lecture et écriture dans le tampon et purge ce dernier.



Procédures d'écriture dans le tampon

  • DBMS_OUTPUT.PUT (item IN NUMBER)
  • DBMS_OUTPUT.PUT (item IN VARCHAR2)
  • DBMS_OUTPUT.PUT (item IN DATE)


  • DBMS_OUTPUT.PUT_LINE (item IN NUMBER)
  • DBMS_OUTPUT.PUT_LINE (item IN VARCHAR2)
  • DBMS_OUTPUT.PUT_LINE (item IN DATE)


  • DBMS_OUTPUT.NEW_LINE

item représente un littéral ou une variable

DBMS_OUTPUT.PUT permet d'ajouter des informations dans la ligne en cours du tampon
DBMS_OUTPUT.PUT_LINE permet de générer une ligne entière dans le tampon. Un caractère fin de ligne est automatiquement ajouté en fin de ligne
DBMS_OUTPUT.NEW_LINE permet d'ajouter au tampon un caractère fin de ligne

Exceptions générées
ORA-20000 Buffer overflow, limit of (buf_limit) bytes.
ORU-10027:


ORA-20000 Line length overflow, limit of 255 bytes per line.
ORU-10028:



Procédures de lecture du tampon

  • DBMS_OUTPUT.GET_LINE (ligne OUT VARCHAR2, statut OUT INTEGER)

ligne représente une ligne du tampon retournée, à l'exclusion du caractère NL final
La longueur maximum de ligne est de 255 caractères

statut retourne la valeur 0 si la lecture s'est déroulée correctement et 1 s'il n'y a plus de lignes dans le tampon

  • DBMS_OUTPUT.GET_LINES (lignes OUT tableau_char, nombre_lignes IN OUT INTEGER)

tableau_char représente un tableau de chaînes de caractères. La taille maximum de chaque ligne est de 255 caractères
nombre_lignes en entrée représente le nombre de lignes du tampon que l'on souhaite lire.
En sortie, il indique le nombre de lignes effectivement lues depuis le tampon

Exemple

 
Sélectionnez

SQL> set serveroutput on
SQL> Declare
  2     CURSOR C_EMP Is
  3     Select * From EMP ;
  4  Begin
  5     -- Ouverture du tampon --
  6     DBMS_OUTPUT.ENABLE( 1000000 ) ;
  7     -- Boucle sur la table EMP --
  8     For C in C_EMP Loop
  9        -- Ligne avec caractère fin de ligne --
 10        DBMS_OUTPUT.PUT_LINE( 'Employé -> ' || C.EMPNO ) ;
 11        -- Ligne composée de différents champs --
 12        DBMS_OUTPUT.PUT( ' ' || 'Nom=' || C.ENAME ) ;
 13        DBMS_OUTPUT.PUT( ' ' || 'Job=' || C.JOB ) ;
 14        DBMS_OUTPUT.PUT( ' ' || 'Dept=' || C.DEPTNO ) ;
 15        DBMS_OUTPUT.PUT( ' ' || 'Salaire=' || C.SAL ) ;
 16        -- Saut de ligne --
 17        DBMS_OUTPUT.NEW_LINE ;         
 18     End loop ;
 19  End ;
 20  /
Employé -> 7369
Nom=SMITH Job=CLERK Dept=20 Salaire=880
Employé -> 7499
Nom=ALLEN Job=SALESMAN Dept=30 Salaire=1936
Employé -> 7521
Nom=WARD Job=SALESMAN Dept=30 Salaire=1375
Employé -> 7566
Nom=JONES Job=MANAGER Dept=20 Salaire=3273
...
Employé -> 9994
Nom=Schmoll Job=CLERK Dept=20 Salaire=2500

Procédure PL/SQL terminée avec succès.

SQL> 

Notez, sous Sql*Plus la commande SET SERVEROUTPUT ON qui permet de rendre actives les fonctions du paquetage DBMS_OUTPUT


précédentsommairesuivant

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

  

Copyright © 2004 SheikYerbouti. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.