[RESOLU] Requete SQL avec variable dynamique sous MS-DOS

Requete SQL avec variable dynamique sous MS-DOS [RESOLU] - SQL/NoSQL - Programmation

Marsh Posté le 08-04-2010 à 10:52:28    

Bonjour,
 
Je dois améliorer un .bat. Voici le fichier d'origine:
 
file.bat:

Code :
  1. sqlplus scott/tiger@bdd @file.sql


 
file.sql:

Code :
  1. SELECT name, department
  2. FROM emp
  3. WHERE name=&name
  4. ORDER BY department;


 
L'utilisateur veut pouvoir effectuer plusieurs requêtes à la suite, sans avoir à relancer le script à chaque fois.
 
J'ai donc modifié le .bat comme suit:
 
new_file.bat:

Code :
  1. @Echo off
  2. :start
  3. sqlplus scott/tiger@bdd @file.sql
  4. goto ask
  5. :ask
  6. echo Do you want to perform a new search ?
  7. choice /c:yn
  8. if errorlevel 2 goto end
  9. if errorlevel 1 goto start
  10. :end


 
Le choice /c:yn fonctionne bien (testé en remplaçant la commande sqlplus par un "echo" de test), mais le problème est qu'à la fin de la requête SQL le script reste bloqué sur le prompt SQL*Plus.
 
Si je rajoute un quit ou exit dans le fichier sql, le .bat se termine après la 1ère requête, et si je tente un "sqlplus -S" (en silent mode donc) le prompt SQL> ne s'affiche pas, mais je suis toujours bloqué dans SQL*Plus.
 
Quelle commande puis-je utiliser pour repasser la main à mon .bat ?
 
Une autre solution serait d'inclure la requête SQL directement dans le script, mais je ne connais pas bien le scripting MS-DOS et je ne sais pas comment remplacer la variable sql dynamique "&name" par une variable MS-DOS dynamique...


Message édité par tilolebo le 08-04-2010 à 14:15:48

---------------
Ravèt pa janmen ni rézon douvan poul
Reply

Marsh Posté le 08-04-2010 à 10:52:28   

Reply

Marsh Posté le 08-04-2010 à 14:15:03    

Résolu:
 

Code :
  1. @Echo off
  2. :start
  3. SET name=
  4. SET /P name=Enter a name and press Enter
  5. echo SELECT name, department from emp WHERE name=%name% ORDER BY department; | sqlplus -S scott/tiger@bdd
  6. goto ask
  7. :ask
  8. SET choice=
  9. SET /P choice=Do you want to perform a new search ? (y/n and Enter)
  10. if %choice% == n goto end
  11. if %choice% == y goto start
  12. :end


---------------
Ravèt pa janmen ni rézon douvan poul
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed