IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 Oracle Discussion :

utilisation variable dans un bloc


Sujet :

Oracle

  1. #1
    Membre du Club
    Inscrit en
    Juillet 2008
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 58
    Points : 50
    Points
    50
    Par défaut utilisation variable dans un bloc
    Bonjour,

    J'utilise sql plus pour me connecter à ma base oracle.
    Dans un script SQL, Je souhaite initialiser une variable avec une premiere requête puis utiliser cette variable dans une deuxième requete. J'utilise le code ci-dessous:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    DECLARE
         variable	table1.champ1%type;
    BEGIN
         SELECT champ1
         INTO variable
         FROM table1
         WHERE champ2='valeur';  /*Il y a obligatoirement un seul enregistrement  en réponse à cette requete*/  
     
         SELECT table2.*
         FROM table2 
         WHERE champ=variable;
     
    END ;
    Mais lorsque je lance mon script, rien ne se passe! Ma synthaxe est-elle incorrecte?

    Merci pour votre aide.

  2. #2
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    Non : Dans tu pl/sql, un SELECT doit obligatoirement aller dans une variable.
    Donc ton 2nd select n'est pas correct.

    Dans ce cas simple, un select en SQL
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT *
         FROM table2 
         WHERE champ=(SELECT champ1 FROM table1 WHERE champ2='valeur';
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

  3. #3
    Membre du Club
    Inscrit en
    Juillet 2008
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 58
    Points : 50
    Points
    50
    Par défaut
    J'ai simplifier le problème pour mieux vous l'expliquer. En réalité j'ai plus de vingt requètes à faire et il est donc pas judicieux de répéter dans les 20 requetes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT champ1 FROM table1 WHERE champ2='valeur'
    Je pense qu'il doit y avoir la possibilité d'initialisé une variable dans une première requete et de me servir de cette variable dans mes 20 autres requêtes. Le tout est de savoir comment???

  4. #4
    Membre confirmé Avatar de rvfranck
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    746
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 746
    Points : 534
    Points
    534
    Par défaut
    Citation Envoyé par keks42 Voir le message
    Mais lorsque je lance mon script, rien ne se passe! Ma synthaxe est-elle incorrecte?
    Rien ne se passe? même pas un message d'erreur?

    Citation Envoyé par keks42 Voir le message
    Je pense qu'il doit y avoir la possibilité d'initialisé une variable dans une première requete et de me servir de cette variable dans mes 20 autres requêtes. Le tout est de savoir comment???
    Oui, mais ce que McM essaye de te dire c'est que si tes 20 autres requetes sont des SELECTil faudrait associer à chacune d'elle la clause INTO (SELECT INTO) sinon ça ne marchera pas. Exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    declare
    var1 scott.emp.empno%type;
    var2 scott.emp.job%type;
    begin
    	select empno
      into var1
      from scott.emp
      where ename='ADAMS';
     
      select job
      into var2
      from scott.emp
      where empno=var1;
     
      dbms_output.put_line('var1 = ' || var1);
      dbms_output.put_line('var2 = ' || var2);
    end;
    Les 2 SELECT ont la clause INTO, le resultat est le suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var1 = 7876
    var2 = CLERK
    "Celui qui reconnaît consciemment ses limites est le plus proche de la perfection." Johann Wolfgang

Discussions similaires

  1. Utiliser fsolve dans un bloc simulink
    Par Gilleo dans le forum Simulink
    Réponses: 0
    Dernier message: 04/01/2008, 15h14
  2. Réponses: 2
    Dernier message: 21/09/2007, 15h51
  3. Utilisation variable dans script expect
    Par fdesarmes dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 27/07/2007, 11h53
  4. Utilisation d'une variable dans un bloc pl/sql
    Par paris2000fr dans le forum PL/SQL
    Réponses: 2
    Dernier message: 29/03/2006, 14h08
  5. [XSL] impossible d'utiliser variable dans expression XPATH
    Par pierre.zelb dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 18/01/2006, 07h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo