Est-ce que la méthode par défaut d'appeler une fonction select * from my_function()
?
Je pose la question parce que j'ai construit une fonction qui ne renvoie rien, insère simplement des données dans une table et (provenant d'un arrière-plan SQL Server), elle "semble" étrange de l'appeler avec select * from...
Je m'attendais à quelque chose comme exec my_function()
use PERFORM
statement - http://www.postgresql.org/docs/current/static/plpgsql-statements.html
Parfois, il est utile d’évaluer une expression ou une requête SELECT tout en ignorant le résultat, par exemple lors de l’appel d’une fonction ayant des effets secondaires, mais aucune valeur de résultat utile. Pour ce faire dans PL/pgSQL, utilisez l’instruction PERFORM.
donc c'est juste
DO $$ BEGIN
PERFORM my_function();
END $$;
PostgreSQL 11 supporte les vraies procédures stockées comme indiqué par @AbdisamadKhalif. Ils prennent en charge le contrôle des transactions en cours de procédure.
Oui, c'est la manière standard, et oui c'est bizarre.
Habituellement, vous écrivez des fonctions telles que des procédures stockées et vous les appelez avec la commande CALL
ou EXECUTE
. PostgreSQL ne supporte pas les vraies procédures stockées (plusieurs jeux de résultats, les transactions autonomes, etc.), cependant, uniquement les fonctions définies par l'utilisateur sql-callable .
Donc, la solution consiste à SELECT function_name()
à l'aide de la syntaxe d'extension PostgreSQL qui omet que FROM
ou SELECT 1 FROM function_name();
soit (un peu) plus standard.
Le pilote ODBC, le pilote JDBC, etc.) comprend la syntaxe {call func_name()}
escape et la traduit automatiquement en un SELECT
sous-jacent.
Vous utiliserez from
lorsque la fonction retournera un ensemble. Si la fonction retourne void
juste faire
select my_function();