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.