sql >> Databáze >  >> RDS >> PostgreSQL

postgreSQL Fibonacci Sequence - Dotaz nemá žádný cíl pro výsledná data

Jste blízko. V podstatě váš SELECT nevede nikam a vaše hlavička funkce říká, že má vracet INT hodnota. Protože se jedná o čistý SQL dotaz pomocí CTE , není potřeba používat PLPGSQL , takže jsem také změnil typ jazyka na 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);

UPRAVIT: jak bylo požadováno, stejná funkce pomocí jazyka 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. Jak mohu synchronizovat dvě databáze Oracle?

  2. Vložení datového objektu PHP se neprovádí

  3. Qt MySQL -------- Nelze otevřít začleněný soubor:'mysql.h':

  4. Nelze změnit sloupec použitý v omezení cizího klíče