PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

postgreSQL Fibonacci Sequence - Kueri tidak memiliki tujuan untuk data hasil

Anda dekat. Pada dasarnya SELECT . Anda mengarah ke mana-mana dan tajuk fungsi Anda mengatakan itu seharusnya mengembalikan INT nilai. Karena ini adalah SQL murni kueri menggunakan CTE , tidak perlu menggunakan PLPGSQL , jadi saya juga mengubah jenis bahasa menjadi 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);

EDIT: seperti yang diminta, fungsi yang sama menggunakan bahasa 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. Apakah kita siap untuk PGDay Nordik?

  2. postgresql des enkripsi

  3. Keluarkan ya/tidak sebagai ganti t/f untuk tipe data boolean di PostgreSQL

  4. Pemicu untuk menyisipkan baris dalam basis data jarak jauh setelah dihapus

  5. Bagaimana cara menginstal paket Python di Linux sehingga ditemukan oleh ekstensi PostgreSQL 13 plpython3u yang sudah berfungsi?