Alors, je développe un petit script SQL (appelé par un script shell) qui me fait un select d'une table et renvoie le résultat dans un fichier en spool. Chaque enregistrement de la table tient sur une ligne, les champs étant séparés par des ';'. Voilà un extrait du 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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
/* Definition des variables globales                               */
define G_FICSPOOL = &1
define G_DATE = &2
 
/* Supprime le defilement des commandes d'un fichier de commandes */
  set ECHO    OFF
 
/* Lors de la redefinition de variables d'environnement de SQLPLUS, supprime */
/* l'affichage de l'ancienne, puis de la nouvelle valeur                     */
/* exemple :                                                                 */
/*    si showmode = ON                                                       */
/*       SQL> set pagesize 5                                                 */
/*       old: pagesize 3                                                     */
/*       new: pagesize 5                                                     */
  set SHOWMODE    OFF
 
/* Supprime l'affichage du text d'une commande avant et apres la substitution */
/* des variables par leur valeur                                              */
  set VERIFY  OFF
 
/* Supprime l'affichage du nombre d'enregistrements selectionnes */
  set FEEDBACK    OFF
 
/* Utilise l'espace pour le caractere "blanc" dans le resultat */
  set TAB     OFF
 
/* Supprime les separations (espace) entre les colonnes */
  set SPACE    0
 
/* Supprime l'affichage a l'ecran du resultat des commandes executees a */
/* partir d'un fichier                                                         */
  set TERMOUT     OFF
 
 
/* Supprime toutes les informations de formattages des donnees en sortie */
  set PAGESIZE    0
 
/* Definit la longueur de la ligne */
set LINESIZE    1068
 
/* DEBUT    */
 
spool &G_FICSPOOL
 
-- select des donnees de l'annee precedente
SELECT CANLCODE || ';' ||
    PRODCODE || ';' ||
    to_char (MTR1MOIS, 'DD/MM/YYYY') || ';' ||
    OPERCOD1 || ';' ||
    CMCCCOD1 || ';' ||
    MTR1OTY1 || ';' ||
    OPERCOD2 || ';' ||
    MTR1OTY2 || ';' ||
    CMCCCOD2 || ';' ||
    TTECCDTS || ';' ||
    VTECCDTS || ';' ||
    TTECCDSS || ';' ||
    VTECCDSS || ';' ||
    MTR1MSGE || ';' ||
    MTR1IMGE || ';' ||
    MTR1KOGE || ';' ||
    MTR1IKGE || ';' ||
    MTR1MSGR || ';' ||
    MTR1IMGR || ';' ||
    MTR1KOGR || ';' ||
    MTR1IKGR || ';' ||
    MTR1MSTC || ';' ||
    MTR1KOTC || ';' ||
    BIOPER1 || ';' ||
    BIOPER2
FROM MTR1
WHERE MTR1MOIS <= to_date ( to_char( to_number(&G_DATE)-1 ) , 'YYYY') ;
Rien de bien compliqué quoi...
Mais (hé oui il y a toujours un mais sinon j'aurai pas posté vous pouvez l'imaginer) j'obtiens le résultat avec 6 lignes vides entre deux enregistrements. Un peu génant sur une table de plus de 5 millions...
Extrait du résultat :
10 ; SS7 ; 01/01/2004 ; INT ; 20404 ; ; INT ; ; 27801 ; TS ; SMSINT ; SS ; STD ; 0 ; ; 0 ; ; 0 ; ; 0 ; ; 23 ; 1 ; ;






10 ; SS7 ; 01/01/2004 ; INT ; 20404 ; ; INT ; ; 28001 ; TS ; (X)UDT ; SS ; STD ; 0 ; ; 0 ; ; 0 ; ; 0 ; ; 257 ; 12 ; ;
Okay, ben si vous pouvez m'aider je vous remercie, si vous pouvez pas je vous remercie quand même d'avoir essayé :]

PS : BIOPER est un char(1) donc ce n'est pas ce champ qui déborde.
Le script SQL est déroulé via sqlplus
PS2 : mince, je m'y paume avec tous ces sous-forums ^^'