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

PostgreSQL Fibonacci Sequence - Truy vấn không có đích cho dữ liệu kết quả

Bạn đã gần gũi. Về cơ bản SELECT của bạn dẫn đến hư không và tiêu đề hàm của bạn cho biết nó phải trả về INT giá trị. Vì nó là SQL thuần túy truy vấn sử dụng CTE , không cần sử dụng PLPGSQL , vì vậy tôi cũng đã thay đổi loại ngôn ngữ thành SQL

CREATE OR REPLACE FUNCTION fibonacci (lastN INTEGER) 
RETURNS SETOF INTEGER LANGUAGE SQL AS $$
WITH RECURSIVE t(a, b) AS (
    VALUES(0,1)
    UNION ALL
        SELECT GREATEST(a, b), a + b AS a from t
        WHERE b < $1
)
SELECT a FROM t;
$$;

SELECT fibonacci(20);

CHỈNH SỬA: theo yêu cầu, cùng một chức năng sử dụng ngôn ngữ PLPGSQL

CREATE OR REPLACE FUNCTION fibonacci (lastN INTEGER) 
RETURNS SETOF INT LANGUAGE PLPGSQL AS $$
BEGIN
RETURN QUERY WITH RECURSIVE t(a, b) AS (
    VALUES(0,1)
    UNION ALL
        SELECT GREATEST(a, b), a + b AS a from t
        WHERE b < $1
)
SELECT a FROM t;
END $$;

SELECT fibonacci(20);



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm thế nào để xử lý một giá trị tùy chọn được trả về bởi một truy vấn bằng cách sử dụng thùng postgres?

  2. Tổng số bản ghi mỗi tuần

  3. Thêm khóa vào cột hstore trống

  4. SQL:Ưu điểm của ENUM so với mối quan hệ một-nhiều?

  5. cách khôi phục postgresql DB mà không cần sao lưu