PLSQL : nom de variable ... variable

PLSQL : nom de variable ... variable - SQL/NoSQL - Programmation

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.

Reply

Marsh Posté le 30-04-2002 à 11:21:28   

Reply

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 ?

Reply

Marsh Posté le 30-04-2002 à 12:00:21    

ouah impressionant! ;)
check tes privates...


---------------
(Feed-Back HFR) - Funky Tonight!
Reply

Marsh Posté le 30-04-2002 à 12:01:06    

ben rien n'a change !

Reply

Marsh Posté le 30-04-2002 à 12:04:07    

argh c ché moa ke ca merde completement en fait :sweat:


---------------
(Feed-Back HFR) - Funky Tonight!
Reply

Marsh Posté le 30-04-2002 à 12:05:19    

hum... désolés tomwy... on sort de ton topic...  :D

Reply

Marsh 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 !...  :D  



Reply

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.

Reply

Marsh Posté le 30-04-2002 à 12:08:04    

mais ça se fait aussi en plsql ce que je t'ai dit ?!  :heink:

 

[jfdsdjhfuetppo]--Message édité par dpmy le 30-04-2002 à 12:08:33--[/jfdsdjhfuetppo]

Reply

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 ?

Reply

Marsh Posté le 30-04-2002 à 12:20:32   

Reply

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'

Reply

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...

Reply

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 ?

Reply

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.

Reply

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;

Reply

Marsh Posté le 30-04-2002 à 12:54:07    

'temp'+cpt:='c'+'cpt';);
 Meme sans la parenthese a droite :D

Reply

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;

Reply

Marsh Posté le 30-04-2002 à 13:00:25    

Ca compile mais ca declanche toujours une exception : ORA-06502
 :heink:

Reply

Marsh Posté le 30-04-2002 à 13:02:03    

en fait j dit une betise
essaye peut-etre
 
res:=concat(c,cpt);

Reply

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 !  ;)

Reply

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.

Reply

Marsh Posté le 30-04-2002 à 13:06:22    

vi vi j bien compris...  :D

Reply

Marsh Posté le 30-04-2002 à 13:09:48    

cool  :D  
Bon je vais me chercher un sandwitch et je m'y remets dans 10 minutes.

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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