Hello tout le monde,
Pour débugger un script PL /SQL (ou plus exactement Forms), j'ai eu l'idée de logger les valeurs des variables dans un fichiers.
Mon problème :
J'ai une procédure stockée qui appelle elle même une fonction.
Dans la procédure stockée mère, pas de souci. Je créé un descripteur de fichier et j'utilise un fopen (avec l'option "a" pour ajouter). Mais dans la fonction fille comment faire ?
Exemple de la procédure mère :
Mais dans la fonction appellé, comment dois je procéder ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 PROCEDURE POST_FORMS_COMMIT IS f_file_id UTL_FILE.FILE_TYPE; v_file_location VARCHAR2(256) := 'DIR_LOGDEBUG'; v_filename_debug VARCHAR2(256) := 'deg.txt'; v_date_aujourdhui VARCHAR2(256); BEGIN f_file_id := UTL_FILE.FOPEN(v_file_location,v_filename_debug,'w'); select to_char(sysdate, 'dd/mm/yyyy HH24:MI:ss') into v_date_aujourdhui from dual; UTL_FILE.PUT_LINE(f_file_id,v_date_aujourdhui || '****************** DEBUT - POST_FORMS_COMMIT ***************************'); fonction_fille; UTL_FILE.PUT_LINE(f_file_id,v_date_aujourdhui || '****************** FIN - POST_FORMS_COMMIT ***************************'); UTL_FILE.FCLOSE (f_file_id); END;
Idéalement, ca serait d'ajouter un argument à la fonction et de transmettre un descripteur de fichier. J'aimerais éviter cela car cela m'obligerai à changer trop la structure du code. Or l'écriture dans le fichier, ca serait pour du débuggage.
Dois je fermer le fichier avant l'appel de la fonction dans la procédure mère et ensuite je réouvre le fichier dans la fonction fille ?
Je trouve cette méthode très lourde.
Je pensais passer par des variables globales mais malheureusment, les variables globales sous Forms sont uniquement de type CHAR comme peu en témoigner la doc : http://sheikyerbouti.developpez.com/...g/?page=Chap38
Il n'est pas possible de stocker dans une variable globale un descripteur de fichier.
Partager