Regarde bien la casse du champ BordDroite dans ta base de données,
car il ne la reconnait pas.
Version imprimable
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:
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 :yaisse2:
Merci de votre aide :king:
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:
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:
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:
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 :king: ça marche au poil :mouarf: