Votre fonction ne serait pas créée. RETURN
après end
est un non-sens syntaxique.
Dans tous les cas, une fonction avec un VARIADIC
le paramètre fait exactement ce que vous demandez :
CREATE OR REPLACE FUNCTION test_function(VARIADIC varchar[])
RETURNS SETOF integer AS
$func$
SELECT column2
FROM test_table
WHERE column1 = ANY($1);
$func$ LANGUAGE sql;
Appeler (au choix) :
SELECT * FROM test_function('data1', 'data2', 'data3');
En utilisant une fonction SQL simple, plpgsql n'est pas requis pour l'exemple simple. Mais VARIADIC
fonctionne également pour les fonctions plpgsql.
Utilisation de RETURNS SETOF integer
car cela peut évidemment renvoyer plusieurs lignes.
Détails :
- Passer plusieurs valeurs dans un seul paramètre
- Renvoyer les lignes correspondant aux éléments du tableau d'entrée dans la fonction plpgsql
- Le paramètre VARIADIC doit être le dernier paramètre d'entrée
- Renvoyer les lignes correspondant aux éléments du tableau d'entrée dans la fonction plpgsql
Violon SQL démo avec des paramètres supplémentaires.