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

Hàm Postgres trả về bảng không trả về dữ liệu trong cột

Để nhận các cột riêng lẻ thay vì loại hàng, hãy gọi hàm với:

SELECT * FROM testfunction();

Giống như bạn chọn tất cả các cột từ một bảng.
Cũng xem xét biểu mẫu đã xem xét này của chức năng kiểm tra của bạn:

CREATE OR REPLACE FUNCTION testfunction()
  RETURNS TABLE(a int, b int)
  LANGUAGE plpgsql AS
$func$
DECLARE
   _a int := 0;
   _b int := 0;
BEGIN
   CREATE TABLE tempTable AS SELECT _a, _b;
   RETURN QUERY SELECT * FROM tempTable;
   DROP TABLE tempTable;
END
$func$;

Cụ thể:

DECLARE từ khóa chỉ cần dùng một lần.

Tránh khai báo các tham số đã được khai báo (ngầm định) là OUT trong RETURNS TABLE (...) mệnh đề.

Không sử dụng số nhận dạng caMeL-case chưa được trích dẫn trong Postgres. Nó hoạt động, các số nhận dạng chưa được trích dẫn được chuyển thành chữ thường, nhưng nó có thể dẫn đến các lỗi khó hiểu. Xem:

  • Tên cột PostgreSQL có phân biệt chữ hoa chữ thường không?

Bảng tạm thời trong ví dụ này hoàn toàn vô dụng (có thể được đơn giản hóa quá mức). Ví dụ như đã cho tóm tắt thành:

CREATE OR REPLACE FUNCTION testfunction(OUT a int, OUT b int)
  LANGUAGE plpgsql AS
$func$
BEGIN
   a := 0;
   b := 0;
END
$func$;


  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 date_trunc () hoạt động trong PostgreSQL

  2. Cách cấu hình AppArmor cho PostgreSQL và TimescaleDB

  3. CHÈN VÀO ... TỪ CHỌN ... QUAY LẠI ánh xạ id

  4. Làm cách nào để nối các chuỗi của một trường chuỗi trong một truy vấn PostgreSQL 'group by'?

  5. org.hibernate.internal.util.config.ConfigurationException:Không thể định vị tài nguyên cfg.xml [/HibernateTest/src/hibernate.cfg.xml]