PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Passer plusieurs valeurs dans un seul paramètre

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.