Вашата функция няма да бъде създадена. RETURN
след end
е синтактична глупост.
Така или иначе, функция с VARIADIC
параметърът прави точно какво искате:
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;
Обадете се (по желание):
SELECT * FROM test_function('data1', 'data2', 'data3');
Използвайки проста SQL функция, plpgsql не се изисква за простия пример. Но VARIADIC
работи и за plpgsql функции.
Използване на RETURNS SETOF integer
тъй като това очевидно може да върне няколко реда.
Подробности:
- Предаване на множество стойности в един параметър
- Връщане на редове, съответстващи на елементи от входния масив във функцията plpgsql
- Параметърът VARIADIC трябва да е последният входен параметър
- Връщане на редове, съответстващи на елементи от входния масив във функцията plpgsql
SQL Fiddle демонстрация с допълнителни параметри.