Vous n'êtes pas identifié(e).

#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

Pied de page des forums