Plusieurs valeurs dans un parametre en batch
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:
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 :
Code:
WHERE ta.identifiant in ('123','456','456','789')
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 ?
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 !