sql >> Database >  >> RDS >> PostgreSQL

postgreSQL Fibonacci-reeks - Query heeft geen bestemming voor resultaatgegevens

Je bent dichtbij. In principe uw SELECT leidt naar nergens en je functiekop zegt dat het een INT . moet retourneren waarde. Omdat het een pure SQL is opvragen met CTE , het is niet nodig om PLPGSQL te gebruiken , dus ik heb ook het taaltype gewijzigd in 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);

BEWERKEN: zoals gevraagd, dezelfde functie in de taal 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. Spring Boot + docker-compose + MySQL:verbinding geweigerd

  2. Relatiekenmerken vertalen van ER-diagram naar SQL

  3. Waarom resulteert mijn zoekopdracht met betrekking tot deling en COUNT altijd in 1?

  4. Hoe automatisch opnieuw te plaatsen na het gebruik van identity_insert?