La tua funzione non verrebbe creata. RETURN
dopo end
è una sciocchezza sintattica.
In ogni caso, una funzione con un VARIADIC
parametro fa esattamente cosa chiedi:
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;
Chiama (a piacere):
SELECT * FROM test_function('data1', 'data2', 'data3');
Utilizzando una semplice funzione SQL, plpgsql non è richiesto per il semplice esempio. Ma VARIADIC
funziona anche per le funzioni plpgsql.
Usando RETURNS SETOF integer
poiché questo può ovviamente restituire più righe.
Dettagli:
- Passa più valori in un singolo parametro
- Restituisce le righe corrispondenti agli elementi dell'array di input nella funzione plpgsql
- Il parametro VARIADIC deve essere l'ultimo parametro di input
- Restituisce le righe corrispondenti agli elementi dell'array di input nella funzione plpgsql
SQL Fiddle demo con parametri aggiuntivi.