Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
Pages : 1
#1 29/01/2014 18:29:40
- GAEREL
- Membre
[RESOLU] PERFORM et dynamisme...
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
#2 29/01/2014 23:10:44
- gleu
- Administrateur
Re : [RESOLU] PERFORM et dynamisme...
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
#3 30/01/2014 11:16:41
- GAEREL
- Membre
Re : [RESOLU] PERFORM et dynamisme...
Parfait.
Merci.
Cordialement.
Fred.
Hors ligne
Pages : 1