Din funktion ville ikke blive oprettet. RETURN
efter end
er syntaktisk nonsens.
Uanset hvad, en funktion med en VARIADIC
parameter gør præcis hvad du beder 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 (som ønsket):
SELECT * FROM test_function('data1', 'data2', 'data3');
Ved at bruge en simpel SQL-funktion er plpgsql ikke påkrævet for det simple eksempel. Men VARIADIC
virker også til plpgsql-funktioner.
Brug af RETURNS SETOF integer
da dette naturligvis kan returnere flere rækker.
Detaljer:
- Send flere værdier i en enkelt parameter
- Returner rækker, der matcher elementer af input-array i plpgsql-funktionen
- VARIADIC-parameter skal være den sidste inputparameter
- Returner rækker, der matcher elementer af input-array i plpgsql-funktionen
SQL Fiddle demo med yderligere parametre.