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

Requêtes PostgreSQL Discussion :

[PG/pgsql] Fonction, argument et FROM


Sujet :

Requêtes PostgreSQL

  1. #21
    jnore
    Invité(e)
    Par défaut
    Regarde bien la casse du champ BordDroite dans ta base de données,
    car il ne la reconnait pas.

  2. #22
    Invité2
    Invité(e)
    Par défaut
    Après une bonne 20aine de test (execution/modification) j'y arrive :

    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
    19
    20
    21
    22
    CREATE OR REPLACE FUNCTION ri_ajoute_fils(nom_table character, nom character, pk_parent integer)
      RETURNS boolean AS
    $BODY$
    DECLARE
    Bornes RECORD;
    BEGIN
    EXECUTE 'SELECT "BordDroit" FROM "'|| nom_table ||'" WHERE id= ' || pk_parent || '' INTO Bornes;
     
    EXECUTE 'UPDATE '|| quote_ident (nom_table)||'
    SET "BordDroit" = "BordDroit" + 2 
    WHERE "BordDroit" >= '||Bornes||';';
     
    EXECUTE 'UPDATE '|| quote_ident (nom_table)||'
    SET "BordGauche" = "BordGauche" + 2 
    WHERE "BordGauche" >= '||Bornes||';';
     
    EXECUTE 'INSERT INTO '|| quote_ident (nom_table)||' ("BordDroit", "BordGauche", nom) 
    VALUES ('||Bornes||', ('||Bornes||'+1), '''||nom||''');';
    RETURN TRUE;
    END;
    $BODY$
      LANGUAGE 'plpgsql' VOLATILE;
    Ca marche au poil

    vous êtes des boss

    Merci de votre aide

  3. #23
    Invité2
    Invité(e)
    Par défaut
    Simple question : comment je fais pour récupérer une colonne de lus, j'aimerais leurs ajouter la colonne niveau...

    Par avance merci de votre aide

  4. #24
    jnore
    Invité(e)
    Par défaut
    Je ne comprends pas bien ta question, precise...

  5. #25
    Invité2
    Invité(e)
    Par défaut
    En gros, j'aimerais récupérer dans le même select le champs niveau du père, dans une variable autre

  6. #26
    jnore
    Invité(e)
    Par défaut
    Donne les infos sur le champ/table en question.
    Sache que tu n'as pas besoin de changer de variable, envoie, je vais te montrer.

    Cdlt

  7. #27
    Invité2
    Invité(e)
    Par défaut
    Grosso-modo j'ai ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Bornes RECORD;
     
    -- ...
     
    EXECUTE 'SELECT "BordDroit" FROM "'|| nom_table ||'" WHERE id= ' || pk_parent || '' INTO Bornes;
    Ici, je récupère BordDroit (integer). Dans la même requête, j'aimerais récupérer, et assigner à une variable, Niveau :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Bornes RECORD;
    Niveau RECORD;
     
    --...
     
    EXECUTE 'SELECT "BordDroit" FROM "'|| nom_table ||'" WHERE id= ' || pk_parent || '' INTO Bornes; -- Modification de la requête, pour pouvoir récupérer le champs "Niveau"
     
    -- ...
     
    EXECUTE 'INSERT INTO '|| quote_ident (nom_table)||' ("BordDroit", "BordGauche", nom, "Niveau") 
    VALUES ('||Bornes||', ('||Bornes||'+1), '''||nom||''', ('||Niveau||'+1));';
    Voilà, maintenant, comment modifier ma requête ?

    Par avance merci de votre aide

  8. #28
    jnore
    Invité(e)
    Par défaut
    Si niveau se trouve sur la même table que BordDroit, alors tu fais ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    EXECUTE 'SELECT "BordDroit", "niveau" FROM "'|| nom_table ||'" WHERE id= ' || pk_parent || '' INTO Bornes;
     
     
    -----
     
    EXECUTE 'INSERT INTO '|| quote_ident (nom_table)||' ("BordDroit", "BordGauche", nom, "Niveau") 
    VALUES ('|| Bornes."BordDroit" ||', ('|| Bornes."BordDroit" ||'+1), '''||nom||''', ('|| Bornes."niveau" ||'+1));';
    Puisque la variable que tu as créées est de type record, tu peux récupérer les valeurs de champ avec la notation pointée.
    merci de dire si ok.

    Cdlt

  9. #29
    Invité2
    Invité(e)
    Par défaut
    Bonjour, bah, me connaissant, je ne pensais pas que ça marche du premier coups, merci ça marche au poil

Discussions similaires

  1. Fonction argument d'une autre Fonction
    Par didyeah dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 21/05/2007, 16h10
  2. Appel de fonctions/arguments
    Par GO dans le forum C++
    Réponses: 14
    Dernier message: 25/09/2006, 23h46
  3. [Débutant]Fonction à arguments variables
    Par Jahjouh dans le forum C++
    Réponses: 5
    Dernier message: 15/09/2006, 00h21
  4. Fonction à argument(s) optionnel(s)
    Par JUJU and CO dans le forum C
    Réponses: 3
    Dernier message: 27/01/2006, 12h51
  5. fonction , arguments
    Par molesqualeux dans le forum C
    Réponses: 6
    Dernier message: 31/10/2005, 18h45

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