Bonjour,
j'ai un script batch, qui fait tourner une requête et qui génère un fichier Excel, seulement je vais y apporter l'évolution suivante et j'avais pensé à deux manières de faire:
voici le code de mon batch
Code Batch : 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 ACCEPT identifiant PROMPT 'identifiant : ' set echo off set newp none set termout off set feedb off set head on set heads on set underline off SET VERIFY OFF set pages 10000 set lines 100 set pagesize 20000 set long 200 set colsep ";" define date1=foo column date1 new_value date1 column identifiant format a20 column nom format a12 column champs3 format 9999999999 select 'monfichier_'||to_char(sysdate-1,'yyyy_mm_dd_HH_MM_SS')||'.csv' date1 from dual; set termout on spool "D:\xxxx\xxxxx\dddd\&date1" alter session set NLS_NUMERIC_CHARACTERS=',.'; SELECT t1.identifiant as identifiant, ta.nom as nom, t2.champs3 as champs3 FROM table1 t1 inner JOIN table2 t2 ON .... inner join table3 d2 on .... inner join table4 ta on ..... WHERE identifiant in in ('&identifiant ') order ..... asc; spool off
1er méthode:
j'aimerais passer un paramètre dans ma requête, comme ça l'utilisateur lance le script (voir code ci avant) et il saisit un numéro et dès qu'il appuie sur entrée, la requête tourne, le fichier Excel se génère et fini.
Seulement, j'aimerais faire en sorte que l'utilisateur puisse saisir plusieurs identifiants ex: 123,456,789 et dans la requête ça donnerait comme ceci :
mais le problème, si je mets un chiffre ça marche, mais si j'en rentre plusieurs séparés par des virgules, ça ne marche plus, comment ça se fait et comment pourrais-je faire pour que ça marche ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part WHERE ta.identifiant in ('123','456','456','789')
2eme méthode:
on a pensé au système suivant : on enregistre dans la base de données, dans une table une liste de numéros, avec une colonne "traite" ayant pour valeur "oui" ou "non" ou 0/1 peu importe. On fait un select de ces numéros non traités, puis notre batch tourne ayant pour paramètre la liste des numéros retournée par la précédente requête.
cette méthode m'a l'air d'être non pas une usine à gaz mais pire que ça pour pas grand chose, mais je pense que la méthode 1 est plus faisable?
merci pour vos conseils !
Partager