Din funktion skulle inte skapas. RETURN
efter end
är syntaktisk nonsens.
Hur som helst, en funktion med en VARIADIC
parametern gör exakt vad du ber om:
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;
Ring (efter önskemål):
SELECT * FROM test_function('data1', 'data2', 'data3');
Med en enkel SQL-funktion krävs inte plpgsql för det enkla exemplet. Men VARIADIC
fungerar också för plpgsql-funktioner.
Använda RETURNS SETOF integer
eftersom detta uppenbarligen kan returnera flera rader.
Detaljer:
- Skicka flera värden i en enda parameter
- Returnera rader som matchar element i inmatningsmatrisen i plpgsql-funktionen
- VARIADIC-parametern måste vara den sista indataparametern
- Returnera rader som matchar element i inmatningsmatrisen i plpgsql-funktionen
SQL Fiddle demo med ytterligare parametrar.