lundi 28 juin 2010

Afficher le code source d'un objet de la BD.

Pour afficher le code source d'un objet stocké dans la BD (procédure ou fonction), j'ai crée une procédure paramétrable qui permet de faire ce travail, mais avant ça, on doit créer une autre pour la stocker sur le schéma de la BD.

SET SERVEROUTPUT ON (important pour afficher les messages en PL/SQL)
create or replace procedure TestMessage(mes varchar2)
is
begin
dbms_output.put_line(mes);
end;

Cette procédure affiche n'importe quel message sur l'écran. On va compiler cette procédure pour créer l'objet. Ensuite, la voici la procédure aff_code_source:

CREATE OR REPLACE PROCEDURE AFF_CODE_SOURCE(NOM_OBJET IN VARCHAR2)
IS

CURSOR CUR_OBJET
IS
SELECT TEXT FROM USER_SOURCE -- SELECT POUR AFFICHER
WHERE NAME=NOM_OBJET -- LE CODE SOURCE
ORDER BY LINE;

LIG_OBJ CUR_OBJET%ROWTYPE;
INDICE NUMBER:=0;
BEGIN
OPEN CUR_OBJET;
LOOP
FETCH CUR_OBJET INTO LIG_OBJ; --RÉCUPÈRE LA LIGNE
EXIT WHEN CUR_OBJET%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(LIG_OBJ.TEXT); --AFFICHER LE CONTENU DE CHAQUE LIGNE

INDICE := INDICE+1;
END LOOP;

CLOSE CUR_OBJET;
IF INDICE=0 THEN
TestMessage(' ERREUR... LA PROCÉDURE OU LA FONCTION '||NOM_OBJET||' N''A PAS ÉTÉ CRÉE');
END IF;

END AFF_CODE_SOURCE;

Compilez cette procédure et vous verrez les résultats en exécutant la commande suivante:
EXEC AFF_CODE_SOURCE('TESTMESSAGE');

Aucun commentaire:

Enregistrer un commentaire