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 :
Et donc à l'erreur suivante :
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;
Il me semblait que Pl/pgsql permettait les variable à la clause FROM, ai-je mal lu ?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
Par avance merci de votre aide
Partager