PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Truyền nhiều giá trị trong một tham số

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.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách tạo mảng trong PostgreSQL

  2. Tạo một bảng gồm hai loại trong PostgreSQL

  3. Cài đặt Odoo trên Mac Không thể Thực thi Lệnh LESSC

  4. tệp postgres db - tệp nào đại diện cho bảng / chỉ mục cụ thể?

  5. Lặp qua các cột của RECORD