Bonjour,

Depuis peu j'ai dût m'attaquer aux fonctions, je veux nommer ma table au moment de l'exécution (j'aurais un nombre finit de table), j'ai tenté ça :

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
CREATE FUNCTION ri_ajoute_fils(IN nomtable character, IN nom character, IN pk_parent integer) RETURNS void AS
$$
DECLARE
Bornes RECORD;
BEGIN
SELECT BordDroite INTO Bornes FROM nomtable WHERE id=pk_parent;
 
UPDATE nomtable
SET BordDroit = BordDroit + 2 
WHERE BordDroit >= Bornes;
 
UPDATE nomtable
SET BordGauche = BordGauche + 2 
WHERE BordGauche >= Bornes;
 
INSERT INTO nomtable (BordDroit, BordGauche, nom) 
VALUES (Bornes, Bornes+1, nom);
END;
$$LANGUAGE 'plpgsql' VOLATILE;
Et donc à l'erreur suivante :

ERREUR: erreur de syntaxe sur ou près de « $1 »
LIGNE 1 : SELECT BordDroite FROM $1 WHERE id= $2
^
REQUÊTE : SELECT BordDroite FROM $1 WHERE id= $2
CONTEXTE : SQL statement in PL/PgSQL function "ri_ajoute_fils" near line 4


********** Erreur **********

ERREUR: erreur de syntaxe sur ou près de « $1 »
État SQL :42601
Contexte : SQL statement in PL/PgSQL function "ri_ajoute_fils" near line 4
Il me semblait que Pl/pgsql permettait les variable à la clause FROM, ai-je mal lu ?

Par avance merci de votre aide