Précédent   Forum des professionnels en informatique > Bases de données > Oracle > PL/SQL
PL/SQL Forum d'entraide sur le PL/SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 05/04/2011, 11h08   #1
Invité régulier
 
Inscription : janvier 2006
Messages : 44
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 44
Points : 7
Points : 7
Par défaut Liste de valeurs en pl/sql

Bonjour la team,
j'ai un petit problème de programmation et je vous sollicite pour avoir votre avis.
Savez vous s'il est possible de faire une telle instruction en pl/sql:
for ma_variable in ('valeur1', 'valeur2')
instructions. en utilisant ma-variable
end for;

Merci d'avance pour votre aide,
berni.
bernidupont est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/04/2011, 17h44   #2
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 684
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 684
Points : 10 442
Points : 10 442
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
Un simple IF non ?
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/04/2011, 13h22   #3
Membre Expert
 
Femme
Ingénieur développement logiciels
Inscription : juin 2007
Messages : 480
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France, Ain (Rhône Alpes)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : juin 2007
Messages : 480
Points : 1 024
Points : 1 024
Bonjour,
Une possibilité serait de créer une fonction avec le code utilisant la variable et appeler cette fonction pour chaque valeur.
tedo01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/04/2011, 14h47   #4
Invité régulier
 
Inscription : janvier 2006
Messages : 44
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 44
Points : 7
Points : 7
c'est possible de faire
IF ma_variables in (liste de valeurs..)
par contre pour la boucle FOR je n'ai pas trouvé.
Du coup j'ai utilisé une collection avec ma liste de valeurs sur laquelle je boucle.
En tout cas merci pour votre aide.
@+ berni.
bernidupont est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/04/2011, 15h09   #5
Futur Membre du Club
 
Inscription : avril 2007
Messages : 47
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 47
Points : 16
Points : 16
Bonjour,

Code sql :
1
2
3
4
5
6
7
8
DECLARE
ma_variable NUMBER(3) := 1;
 
BEGIN
FOR ma_variable IN 1..100
     ma_variable := ma_variable +1;
END LOOP;
END;
Foyus est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 07/04/2011, 17h10   #6
Membre expérimenté
 
François
Inscription : février 2010
Messages : 305
Détails du profil
Informations personnelles :
Nom : François

Informations forums :
Inscription : février 2010
Messages : 305
Points : 535
Points : 535
Citation:
Envoyé par Foyus Voir le message
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
TMP>DECLARE
  2  ma_variable NUMBER(3) := 1;
  3
  4  BEGIN
  5  FOR ma_variable IN 1..100
  6       ma_variable := ma_variable +1;
  7  END LOOP;
  8  END;
  9  /
     ma_variable := ma_variable +1;
     *
ERROR at line 6:
ORA-06550: line 6, COLUMN 6:
PLS-00103: Encountered the symbol "MA_VARIABLE" when expecting one of the following:
* & - + / at loop mod remainder rem <an exponent (**)> ||
multiset
The symbol "loop" was substituted FOR "MA_VARIABLE" TO continue.
C'est quand même pas de chance.
Rams7s est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 07/04/2011, 18h13   #7
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 684
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 684
Points : 10 442
Points : 10 442
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
Au choix, avec WHILE :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
DECLARE
    ma_variable PLS_INTEGER := 1;
BEGIN
    WHILE ma_variable <= 5
    LOOP
      dbms_output.put_line(to_char(ma_variable));
      ma_variable := ma_variable +1;
    END LOOP;
END;
/
 
1
2
3
4
5
Ou avec un FOR :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
BEGIN
    FOR ma_variable IN 1..5
    LOOP
      dbms_output.put_line(to_char(ma_variable));
    END LOOP;
END;
/
 
1
2
3
4
5
Mais personnellement je n'ai toujours pas compris la question du départ, pas de code, explications obscures.
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 07/04/2011, 19h43   #8
Rédacteur
 
Inscription : décembre 2002
Messages : 2 385
Détails du profil
Informations personnelles :
Localisation : France, Var (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : décembre 2002
Messages : 2 385
Points : 3 261
Points : 3 261
Moi non plus je n'ai pas compris la question, mais voici ma réponse !

Code :
1
2
3
4
5
6
7
8
SET serveroutput ON
 
begin
    FOR i IN (SELECT column_value AS MOT FROM TABLE(sys.odcivarchar2list('un', 'deux', 'trois', 'quatre'))) loop
        dbms_output.put_line(i.mot);
    end loop;
end;
/
__________________
Consultant / formateur Oracle indépendant
Certifié OCP 10g et 11g, sécurité 11g
Pomalaix est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h29.


 
 
 
 
Partenaires

Hébergement Web