Vous n'êtes pas identifié(e).
Pages : 1
Bonjour à tous.
Dans une fonction PL/pgSQL, je souhaite appeler une autre fonction qui varie selon des conditions fonctionnelles.
Quelque chose qui ressemblerait à cela
CREATE OR REPLACE FUNCTION travail.appellante() RETURNS void AS
$BODY$
DECLARE v_appelee character varying (100);
BEGIN
v_appelee := 'travail.appellee()';
EXECUTE 'PERFORM ' || v_appelee;
END;
$BODY$
LANGUAGE plpgsql VOLATILE STRICT COST 100;
Dans mon exemple v_appellee est forcé mais elle proviendra d'une table associant 'type de données' et 'fonction de traitement'
Je reçoit l'erreur suivante à l'exécution :
SELECT travail.appellante();
ERROR: syntax error at or near "PERFORM"
LINE 1: PERFORM travail.appellee()
^
QUERY: PERFORM travail.appellee()
CONTEXT: PL/pgSQL function travail.appellante() line 7 at EXECUTE statement
********** Erreur **********
ERROR: syntax error at or near "PERFORM"
État SQL :42601
Contexte : PL/pgSQL function travail.appellante() line 7 at EXECUTE statement
Quelle est l'erreur de syntaxe qui m'échappe ?
Merci d'avance
Fred.
Dernière modification par GAEREL (07/02/2014 12:19:37)
Cordialement.
Fred.
Hors ligne
PERFORM n'est pas une instruction SQL. C'est une instruction PL/pgsql. Vous ne pouvez donc pas le mettre dans une requête dynamique. Remplacez-le par un SELECT.
Guillaume.
Hors ligne
Parfait.
Merci.
Cordialement.
Fred.
Hors ligne
Pages : 1