Regarde bien la casse du champ BordDroite dans ta base de données,
car il ne la reconnait pas.
Regarde bien la casse du champ BordDroite dans ta base de données,
car il ne la reconnait pas.
Après une bonne 20aine de test (execution/modification) j'y arrive :
Ca marche au poil
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;
vous êtes des boss
Merci de votre aide
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
Je ne comprends pas bien ta question, precise...
En gros, j'aimerais récupérer dans le même select le champs niveau du père, dans une variable autre
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
Grosso-modo j'ai ça :
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 Bornes RECORD; -- ... EXECUTE 'SELECT "BordDroit" FROM "'|| nom_table ||'" WHERE id= ' || pk_parent || '' INTO Bornes;
Voilà, maintenant, comment modifier ma requête ?
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));';
Par avance merci de votre aide
Si niveau se trouve sur la même table que BordDroit, alors tu fais ceci:
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.
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));';
merci de dire si ok.
Cdlt
Bonjour, bah, me connaissant, je ne pensais pas que ça marche du premier coups, merci ça marche au poil
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager