PLSQL : nom de variable ... variable - SQL/NoSQL - Programmation
Marsh Posté le 30-04-2002 à 11:57:25
| tomwy a écrit a écrit  : Voila, dans mon SELECT il y a 20 champs qui sont nommés nb1,nb2...nb20. Je dois faire des traitements dessus. J'aimerais bien pouvoir utiliser une boucle du genre : FOR cpt IN 1..20 LOOP recupererLeChamp('nb' || cpt) ... traitement END LOOP; Le probleme c que je ne sais pas comment recuperer les champs en concatenant nb avec cpt. Est ce possible ? Merci. | 
 
 
pour une concatenation resultat='nb'+'cpt' 
 c'est ça que tu veux ? 
Marsh Posté le 30-04-2002 à 12:00:21
ReplyMarsh Posté le 30-04-2002 à 12:04:07
ReplyMarsh Posté le 30-04-2002 à 12:05:55
| dpmy a écrit a écrit  : hum... désolés tomwy... on ne pourrit pas ton topic, on sort tt de suite !...   | 
Marsh Posté le 30-04-2002 à 12:06:51
J'suis pas en javascript la   
  
PLSQL 
Ce que je veux c un nom de variable qui soit variable. 
Je veux pouvoir appeler une serie de variables nb1,nb2...nb20 
en creant leur nom dans une boucle de 1 a 20. 
Marsh Posté le 30-04-2002 à 12:08:04
mais ça se fait aussi en plsql ce que je t'ai dit ?!   
 
[jfdsdjhfuetppo]--Message édité par dpmy le 30-04-2002 à 12:08:33--[/jfdsdjhfuetppo]
Marsh Posté le 30-04-2002 à 12:20:32
ouais mais la concatenation c'est 'nb'||cpt. 
Mais ca j'ai deja essayé et ca compile pas. 
Ca marche chez toi ? 
Il doit y avoir une fonction mais laquelle ? 
Marsh Posté le 30-04-2002 à 12:22:01
non pour afficher c'est 'nb'||cpt 
mais pour concatener ds une variable c 'nb' + 'cpt' 
Marsh Posté le 30-04-2002 à 12:43:31
c un truc de ce genre ce dont tu me parles ? : 
 
declare 
 c1 VARCHAR2(10):='bobby'; 
 c2 VARCHAR2(10):=' et '; 
 c3 VARCHAR2(10):=' jimmy '; 
cpt NUMBER; 
begin 
FOR cpt IN 1..3 LOOP 
 MESSAGE('c'+cpt); 
END LOOP; 
end; 
 
ca compile mais ca leve une exception... 
Marsh Posté le 30-04-2002 à 12:46:43
mais MESSAGE, c'est une fonction que tu  as créé ? 
Si oui, tu peux la montrer ? 
Si non, elle consiste à faire koi EXACTEMENT ? 
Marsh Posté le 30-04-2002 à 12:50:10
message c une fonction de Oracle Forms. Elle sert juste a afficher un message dans la barre des taches ou en pop up. 
Est ce que tu vois ce que je veux faire ? recuperer le contenu de c1 , c2 et c3 dans une boucle. 
Marsh Posté le 30-04-2002 à 12:52:37
si tu veux voila un autre exemple sans message. ( La ca compile quedal) 
 
declare 
 c1 VARCHAR2(10):='bobby'; 
 c2 VARCHAR2(10):=' et '; 
 c3 VARCHAR2(10):=' jimmy '; 
cpt NUMBER; 
temp1 VARCHAR2(10); 
temp2 VARCHAR2(10); 
temp3 VARCHAR2(10); 
begin 
FOR cpt IN 1..3 LOOP 
 'temp'+cpt:='c'+'cpt' ;
; 
END LOOP; 
end; 
Marsh Posté le 30-04-2002 à 12:54:22
oui il me semble avoir compris mais est-ce que tu ne peux pas plutot faire  
 
declare 
res VARCHAR2(15); 
c1 VARCHAR2(10):='bobby'; 
c2 VARCHAR2(10):=' et '; 
c3 VARCHAR2(10):=' jimmy '; 
cpt NUMBER; 
begin 
FOR cpt IN 1..3 LOOP 
res:='c'+'cpt'; 
MESSAGE(res); 
END LOOP; 
end; 
Marsh Posté le 30-04-2002 à 13:00:25
Ca compile mais ca declanche toujours une exception : ORA-06502 
  
 
Marsh Posté le 30-04-2002 à 13:02:03
en fait j dit une betise 
essaye peut-etre 
 
res:=concat(c,cpt); 
Marsh Posté le 30-04-2002 à 13:03:43
bon je teste de mon cote. Préviens qd même si t'arrives à trouver avant !   
 
Marsh Posté le 30-04-2002 à 13:04:26
Ok ca ca marche mais le probleme c qu'apres quand j'affiche res il me donne 'c1' , 'c2' puis 'c3' ce qui est logique alors que moi je voudrais les valeurs de c1 , c2 et c3.
Marsh Posté le 30-04-2002 à 13:09:48
cool   
  
Bon je vais me chercher un sandwitch et je m'y remets dans 10 minutes. 
Marsh Posté le 30-04-2002 à 11:21:28
Voila, dans mon SELECT il y a 20 champs qui sont nommés nb1,nb2...nb20. Je dois faire des traitements dessus. J'aimerais bien pouvoir utiliser une boucle du genre :
FOR cpt IN 1..20 LOOP
recupererLeChamp('nb' || cpt) ... traitement
END LOOP;
Le probleme c que je ne sais pas comment recuperer les champs en concatenant nb avec cpt.
Est ce possible ?
Merci.