PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

postgreSQL Fibonacci Sequence - Заявката няма местоназначение за данните за резултатите

Вие сте близо. По принцип вашият SELECT води до никъде и заглавката на вашата функция казва, че трябва да върне INT стойност. Тъй като е чист SQL заявка с помощта на CTE , няма нужда да използвате PLPGSQL , така че промених и типа език на 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);

РЕДАКТИРАНЕ: както е поискано, същата функция, използваща езика 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. CSV данни в postgreSQL с помощта на Python

  2. Настройване на Django с поддръжка на GeoDjango в AWS Beanstalk или EC2 инстанция

  3. Ред за актуализиране на база данни

  4. Как мога да създам потребител и база данни на Postgres всеки път, когато създавам ново приложение за релси?

  5. Получен обект от тип org.postgresql.util.PGobject