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.