【发布时间】:2023-04-06 19:34:01
【问题描述】:
所以我写了一个这样的斐波那契数列函数:
CREATE OR REPLACE FUNCTION fibonacci (lastN INTEGER)
RETURNS int AS $$
BEGIN
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;
$$ LANGUAGE plpgsql;
但是当我打电话时:
SELECT * FROM fibonacci(20);
控制台显示:
ERROR: query has no destination for result data
HINT: If you want to discard the results of a SELECT, use PERFORM instead.
CONTEXT: PL/pgSQL function fibonacci(integer) line 5 at SQL statement
我认为 Return 语句应该返回查询结果,但事实并非如此。在编写这样的 SQL 函数方面,我完全是个新手。
【问题讨论】:
-
试试这个:选择斐波那契(20);
-
@anonyXmous 仍然给我同样的错误
-
@anonyXmous 问题在于查询无处可去
标签: sql postgresql recursion plpgsql common-table-expression