Bonjour à tous et d'avance merci à ceux qui pourront m'aider.
Dans le cadre de mon travail, je dois réaliser l'extraction de certains champs d'une dizaine de table de base de données au format csv (ou txt).
Je pensais tout d'abord utiliser le package dbms_output, mais celui-ci borne la longueur des lignes à 255 caractères. Or, mes lignes dépassent allègrement les 300/400 caractères, et je n'ai pas trouvé de moyen pour augmenter cette taille.
Je me suis donc rabattu sur un package que je n'ai encore jamais utilisé, mais dont j'avais entendu parler : UTL_FILE.
Celui-ci semble permettre des lignes de 1000 caractères, mais malheureusement j'ai une exception à l'exécution.
Voici mon code :
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56 spool C:\Extraction\clients.log Set linesize 10000 set feedback off set flush off set heading off set headsep off set timing off set pagesize 0 set recsep off set termout off set trimspool on set verify off set wrap on set pause off set serveroutput on DECLARE handle UTL_FILE.FILE_TYPE ; chaine varchar2(30) := 'test écriture'; ouvert boolean; excep exception; message varchar2(50); repertoire Varchar(30) := 'C:\Extraction'; fichier varchar(30) := 'test.txt'; BEGIN begin handle := UTL_FILE.FOPEN(repertoire, fichier, 'W', 32764); Exception When OTHERS Then message := sqlerrm; raise excep; ouvert := UTL_FILE.IS_OPEN( handle ); -- Petit test "alacon" if ouvert = true then dbms_output.put_line('fichier ouvert '); else dbms_output.put_line('fichier non ouvert '); end if; End; UTL_FILE.PUT_LINE( handle, chaine ) ; UTL_FILE.FCLOSE( handle ) ; Exception When excep Then UTL_FILE.FCLOSE_ALL ; RAISE_APPLICATION_ERROR( -20100, message ) ; END; / spool off exit
Et voici l'exception que j'obtiens :
DECLARE
*
ERROR at line 1:
ORA-20100: User-Defined Exception
ORA-06512: at line 33
La ligne 33 est bien évidemment la ligne correspondant à mon RAISE_APPLICATION_ERROR.
Je n'arrive pas d'une part à savoir ce que signifie cette exception, et encore moins à la résoudre.
J'espère que vous pourrez m'aider.
PS : je suis sous Oracle 9I
Partager