Bonjour,
Je veux mettre en place une procédure pl/sql qui copie les lignes d'une de mes tables et les écrits dans un fichier txt en séparent les différentes colonnes par des virgules, j'ai essayé d'écrire un petit quelque chose mais ça marche pas et c'est pleins d'erreurs, si quelqu'un peut m'aider je serais très reconnaissant, j'ai commencé d'abord par les deux requêtes suivantes :
Après, la procédure que j'ai écrit est la suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 CREATE OR REPLACE DIRECTORY dossier AS 'C:\SQL\'; GRANT READ, WRITE ON DIRECTORY dossier TO PUBLIC;
Toutes les lignes ou il y a un UTL_FILE sont soulignées, ainsi que la ligne FETCH.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 create or replace PROCEDURE PLSQL_MEDIC(tab varchar2) AS CURSOR C1 IS SELECT * FROM medicaments; var1 varchar2(50); var2 varchar2(50); var3 varchar2(50); var4 varchar2(50); var5 varchar2(50); var5 varchar2(1); f_file_id UTL_FILE.FILE_TYPE; v_file_location VARCHAR2(256) := '/SQL'; v_line VARCHAR2(4000); BEGIN dbms_output.put_line(v_file_location); f_file_id := UTL_FILE.FOPEN(v_file_location,'test.txt','a'); OPEN C1; LOOP FETCH C1 INTO var1,var2,var3,var4,var5,var6; EXIT WHEN C1%NOTFOUND; UTL_FILE.PUT_LINE(var1,',',var2,',',var3,',',var4,',',var5,',',var6); END LOOP; CLOSE C1; UTL_FILE.FCLOSE (f_file_id); COMMIT; END;
Pour infos, la structure de ma table est la suivante : ID_CLASSE_THERAPEUTIQUE, ID_MEDICAMENT, DESCRIPTION, TYPE_MEDICAMENT, LABO, GENERIQUE
Je travaille sous sql developer connecté à une base oracle express edition.
Merci pour vos retours =)
Partager