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 :

[PL/SQL] [9i] Variables dans une requête


Sujet :

Oracle

  1. #1
    Membre régulier
    Inscrit en
    Juin 2003
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 156
    Points : 85
    Points
    85
    Par défaut [PL/SQL] [9i] Variables dans une requête
    Hello tout le monde !

    Je pensais pouvoir inclure des variables dans une requête d'un script de la façon suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select nom from client where code = maVariable
    Je m'aperçois que ça ne fonctionne pas. Pourtant, il me semble avoir vu des exemples qui ressemblaient étrangement à ça et qui fonctionnaient, sans SQL dynamique je précise.

    Du coup, je me dis que des subtilités ont dû m'échapper... Est-ce que ça peut dépendre du type de la donnée, de la façon de déclarer la variable, de son type... ?

    Merci pour vos précisions, Frédéric

  2. #2
    Rédacteur

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 320
    Points : 3 798
    Points
    3 798
    Par défaut
    Bonjour ,
    cela est tout à fait possible .

    Peux tu nous donner plus de code ...

  3. #3
    Membre régulier
    Inscrit en
    Juin 2003
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 156
    Points : 85
    Points
    85
    Par défaut
    D'accord

    Alors ci-dessous une version simplifiée de la fonction appelée par mon script. Je précise que j'ai bien vérifié en les faisant s'afficher que les données étaient bien passées à la fonction.

    L'ordre SQL renvoie une erreur, trop de lignes extraites pour la clause INTO. Ce qui est anormal par rapport à la requête.

    En SQL dynamique avec les mêmes données, ça passe sans souci. Ici, tout se passe comme s'il ne tenait pas compte de la valeur des variables...

    Merci.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    CREATE OR REPLACE FUNCTION getNumInt (nir IN VARCHAR2, cle IN VARCHAR2, type1 IN VARCHAR2, rang IN VARCHAR2) RETURN VARCHAR2
    IS
    	num VARCHAR2(13);
    BEGIN
    	SELECT NUM_INTERNE_BDU INTO num 
    	FROM RDD_TRANSCO_NIR	
    		WHERE NIR = nir 
    		AND CLE = cle
    		AND TYPE1 = type1
    		AND RANG = rang;
     
    	RETURN num;			
    END;

  4. #4
    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
    la ligne Oracle prendra toujours la colonne si elle a le même nom qu'une variable

    PS : Y'a cle=cle aussi.

    Je te conseille de nommer tes variables autrement (pour s'y retrouver), en les préfixant (p_ ou v_ ou LC$)
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

  5. #5
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    CREATE OR REPLACE FUNCTION getNumInt (p_nir IN VARCHAR2, p_cle IN VARCHAR2, p_type1 IN VARCHAR2, p_rang IN VARCHAR2) RETURN VARCHAR2 
    IS 
       v_num VARCHAR2(13); 
    BEGIN 
       SELECT NUM_INTERNE_BDU INTO v_num 
       FROM RDD_TRANSCO_NIR    
          WHERE NIR = p_nir 
          AND CLE = p_cle 
          AND TYPE1 = p_type1 
          AND RANG = p_rang; 
     
       RETURN v_num;          
    END;
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

  6. #6
    Membre régulier
    Inscrit en
    Juin 2003
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 156
    Points : 85
    Points
    85
    Par défaut
    Merci beaucoup

  7. #7
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Citation Envoyé par ftrifiro
    Merci beaucoup
    bouton en bas à gauche
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Réutiliser une variable dans une requête SQL
    Par marlozo dans le forum PHP & Base de données
    Réponses: 13
    Dernier message: 30/12/2006, 08h52
  2. [SQL] Utilisation de variables dans une requête SQL
    Par heteroclite dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 07/09/2006, 22h38
  3. [SQL] Comment utiliser dans une requête une variable passée par URL
    Par foffa dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 31/08/2006, 12h27
  4. Passer une variable dans une requête SQL
    Par Remedy dans le forum C++
    Réponses: 2
    Dernier message: 11/05/2006, 16h48
  5. Nom de champ variable dans une requête SQL
    Par stip dans le forum ASP
    Réponses: 2
    Dernier message: 30/09/2004, 18h02

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