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

SQL Oracle Discussion :

Utilisation des variables et colonnes dynamiques


Sujet :

SQL Oracle

  1. #1
    Membre du Club
    Inscrit en
    Février 2006
    Messages
    83
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 83
    Points : 56
    Points
    56
    Par défaut Utilisation des variables et colonnes dynamiques
    Bjr,

    Je travail sur Oracle 9i et j'ai un petit problème sur l'utilisation des variables et/ou des colonnes d'une table.

    Je vous montre mon code, ceci est une portion de code d'une procédure stockée en base :

    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
    18
     
    IF v_mod.B1L1C1 = 'O' THEN
    	BEGIN
    		SELECT nomreq INTO v_requete 
    		FROM mytable 
    		WHERE EL_CODREQ = replace(v_mod.B1L1C1,':','');
    		v_requete := ltrim(rtrim(replace(v_requete,';','')));
    		v_requete := replace(v_requete,'  ',' ');
    		v_requete := replace(v_requete,'   ',' ');
    		v_requete := replace(v_requete,':P_MATRIC',t_mat(i));
    		v_requete := replace(v_requete,'SELECT ','SELECT SUM(');
    		v_requete := replace(v_requete,' FROM',') FROM');
     
    		EXECUTE IMMEDIATE v_requete  into v_b1l1c1;
    		EXCEPTION WHEN NO_DATA_FOUND THEN
    				     null;
    	END;
    END IF;
    Mon probleme se trouve sur v_mod.B1L1C1 qui est une colonne de la table v_mod et v_b1l1c1 qui est une varible de type varchar2.
    Mon idée c'est de passer les chiffre en paramètre dans le style : 'v_mod.b'||i||'l'||j||'c'||k. mais la récuperation de la valeur me pose souci.
    Dans forms6i c'est possible avec les fonctions name_in pour la récuperation et copy pour l'affectation
    En faite j'ai une centaine de controle à faire dans ce style et ça serait super si j'arrive à le faire dans une boucle.

    Est-ce que quelqu'un auri t'il une idée?
    merçi

  2. #2
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    Par défaut
    execute immediate?

  3. #3
    Membre du Club
    Inscrit en
    Février 2006
    Messages
    83
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 83
    Points : 56
    Points
    56
    Par défaut
    Oui! c'est bien EXECUTE IMMEDIATE.
    En faite v_requete est une requete sql stockée dans la table dans un champ de type varchar et de taille 4000 byte.

    exemple , v_requete := 'SELECT SUM(NBR_D) FROM COUNT01';
    et que je récupère dans la variable v_b1l1c1. Mais mon problème c'est de retaper 100 fois ce code pour avoir les valeurs dans mes 100 variables, v_b1l1c1 ..v_b1l1c100

  4. #4
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    execute immediate 'SELECT nomreq FROM mytable WHERE EL_CODREQ = replace(v_mod.'||blabla1234||','':'');' INTO v_requete ;

  5. #5
    Membre du Club
    Inscrit en
    Février 2006
    Messages
    83
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 83
    Points : 56
    Points
    56
    Par défaut
    ok! ça marche. merçi à laurentschneider

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

Discussions similaires

  1. Réponses: 12
    Dernier message: 11/04/2006, 18h00
  2. Utiliser des variables d'une BDD
    Par Ragnarok_1er dans le forum Access
    Réponses: 3
    Dernier message: 25/01/2006, 09h32
  3. utilisation des variables global dans tout le projet
    Par EYENGA Joël dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 12/01/2006, 11h55
  4. [MFC] utilisation des variables associées
    Par Grey dans le forum MFC
    Réponses: 2
    Dernier message: 18/11/2005, 15h00
  5. Utiliser des variables d'environnements
    Par Xam335 dans le forum C++Builder
    Réponses: 2
    Dernier message: 14/08/2004, 15h15

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