[SQL] parametre en entrée et boucle sur les requêtes

parametre en entrée et boucle sur les requêtes [SQL] - SQL/NoSQL - Programmation

Marsh Posté le 03-10-2007 à 15:15:45    

Bonjour, j'aurai voulu savoir si c'était possible en SQL de faire entrer un parametre saisie à la main, je m'explique imaginons la requête suivante :
 
select champs1
from table1
where champs2='XXX'
 
Je voudrais avoir en fait un texte avant qui dit "Quelle est la valeur de champs2?", on saisie une valeur qui est pris en paramettre dans XXX, comme ça la requête teste sur XXX.
Puis est il possible de faire une boucle, genre à la fin de la requête ça dit "Voulez vous resaisire une autre valeur?", et si on dit oui, ça redemande la valeur du champs2.
 
J'ai pas trouvé de truc sur le net, et je me dis que si ça se trouve, je cherche quelque chose qui n'est pas possible lol.
Merci de vos réponses.

Reply

Marsh Posté le 03-10-2007 à 15:15:45   

Reply

Marsh Posté le 03-10-2007 à 15:50:04    

en "pur sql" c'est faisable avec une procédure stockée. Pour la mettre en place cela va dépendre de ton sgbd.
 
Si tu as une partie "programmation", tu peux également faire ça avec la plupart des langages via un bind param sur une requête préparée.

Reply

Marsh Posté le 03-10-2007 à 16:14:26    

Bon alors en fait je suis tombé dans du sql comme ça pour les tests au boulot alors que je connais rien, je sais juste que je suis sous Oracle, je vais en tout cas chercher du coté des procédures stockées, merci encore anapajari!

Reply

Marsh Posté le 04-10-2007 à 09:43:27    

Avec SQL+ (mais aussi TOAD) tu peux simplement faire :
 
select champs1
from table1
where champs2 = :xxx;
 
=> Sous TOAD il va ouvrir une boîte de dialogue te demandant la valeur de xxx ainsi que son type.
=> Sous SQL+ il va te dire que tu n'as pas déclaré la variable. Je sais plus comment on fait, mais tu peux le faire sous forme d'une question prompt.

Reply

Marsh Posté le 04-10-2007 à 09:45:37    

Correction, sous SQL+, c'est pas :xxx mais &xxx
 


PROMPT  
PURPOSE:  
 
To send the specified message or a blank line to the user's screen. Normally, you use this command in command files to give information to the user.  
 
SYNTAX:  
 
 
 PROMPT [text]
 
Where:  
 
 
text : is the text of the message you wish to display. If you omit text, PROMPT displays a blank line on the user's screen.  
Example:  
Here is PROMPT used with ACCEPT in command file ASKFORDEPT:  
 
 SQL> GET ASKFORDEPT
   1  PROMPT
   2  PROMPT Please enter a department
   3  PROMPT For example: 10, 20, 30, 40
   4  ACCEPT NEWDEPT NUMBER PROMPT 'DEPT:>'
   5* SELECT DNAME FROM DEPT WHERE DEPTNO = &NEWDEPT
 
If you run the file using @ASKFORDEPT, SQL*Plus displays:  
 Please enter a department
 For example: 10, 20, 30, 40
 DEPT:>
 
You can enter a department number at the DEPT:> prompt. By default, SQL*Plus lists the line containing &NEWDEPT before and after substitution, and then displays the department name matching the number entered at the DEPT:> prompt.  
See also: /, @, accept, get, input, pause, run, start, commands.  


http://www.gove.net/courses/databa [...] s_cmd.html

Reply

Marsh Posté le 04-10-2007 à 09:53:27    

D'ailleurs, t'aurais pu chercher un peu par toi-même :
 
"Oracle prompt variable" dans google...
http://www.google.fr/search?hl=fr& [...] ble+&meta=
 
Second lien (car le premier marche pas [:magicbuzz])
 
Et t'as un exemple basique :


A basic example:
 
 
SQL> select owner from dba_tables where table_name='&FRED'
SQL> /
Enter value for fred: DUAL
old   1: select owner from dba_tables where table_name='&FRED'
new   1: select owner from dba_tables where table_name='DUAL'
OWNER
------------------------------
SYS
1 row selected.


Message édité par MagicBuzz le 04-10-2007 à 09:53:39
Reply

Sujets relatifs:

Leave a Replay

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