PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Passando vários valores em um único parâmetro


Sua função não seria criada. RETURN após end é um absurdo sintático.

De qualquer forma, uma função com um VARIADIC parâmetro faz exatamente o que você pede:
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;

Ligue (como desejar):
SELECT * FROM test_function('data1', 'data2', 'data3');

Usando uma função SQL simples, o plpgsql não é necessário para o exemplo simples. Mas VARIADIC também funciona para funções plpgsql.

Usando RETURNS SETOF integer já que isso obviamente pode retornar várias linhas.

Detalhes:
  • Passe vários valores em um único parâmetro
  • Retorna linhas correspondentes aos elementos da matriz de entrada na função plpgsql
  • O parâmetro VARIADIC deve ser o último parâmetro de entrada
  • Retorna linhas correspondentes aos elementos da matriz de entrada na função plpgsql

Fiddle SQL demonstração com parâmetros adicionais.