PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

PostgreSQL Fibonacci Sequence - Zapytanie nie ma miejsca docelowego dla danych wynikowych

Jesteś blisko. Zasadniczo Twój SELECT prowadzi donikąd, a nagłówek funkcji mówi, że ma zwrócić INT wartość. Ponieważ jest to czysty SQL zapytanie za pomocą CTE , nie ma potrzeby używania PLPGSQL , więc zmieniłem również typ języka 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);

EDYTUJ: zgodnie z żądaniem, ta sama funkcja przy użyciu języka 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. PostgreSQL INSERT do tablicy wyliczeń

  2. PostgreSQL - Przypisz wartość całkowitą do ciągu w instrukcji case

  3. jak zmienić port nasłuchiwania postgresql w systemie Windows?

  4. PostgreSQL:Jak ustawić search_path na poziomie użytkownika?

  5. Użycie hibernacji z dużą ilością wątków