Chức năng của bạn sẽ không được tạo. RETURN
sau end
là vô nghĩa cú pháp.
Dù bằng cách nào, một hàm có VARIADIC
tham số không chính xác những gì bạn yêu cầu:
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;
Gọi (như mong muốn):
SELECT * FROM test_function('data1', 'data2', 'data3');
Sử dụng một hàm SQL đơn giản, không cần plpgsql cho ví dụ đơn giản. Nhưng VARIADIC
cũng hoạt động cho các hàm plpgsql.
Sử dụng số nguyên RETURNS SETOF integer
vì điều này rõ ràng có thể trả về nhiều hàng.
Chi tiết:
- Chuyển nhiều giá trị trong một tham số duy nhất
- Trả về các hàng phù hợp với các phần tử của mảng đầu vào trong hàm plpgsql
- Tham số VARIADIC phải là tham số đầu vào cuối cùng
- Trả về các hàng phù hợp với các phần tử của mảng đầu vào trong hàm plpgsql
SQL Fiddle demo với các thông số bổ sung.