我试图在 SQL 查询中同时使用内联函数和 CTE,但我似乎无法弄清楚如何去做。我可以做一个或另一个,但不能同时做。
例如(归结为无用查询的最低限度),我可以这样做:
WITH
FUNCTION f_test RETURN NUMBER IS
BEGIN
RETURN 1;
END;
SELECT
f_test()
FROM
dual;
Run Code Online (Sandbox Code Playgroud)
我可以这样做:
WITH cte_test AS (
SELECT
1
FROM
dual
)
SELECT
*
FROM
cte_test
Run Code Online (Sandbox Code Playgroud)
如何同时为 select 语句定义函数和 CTE?基本上我想最终得到类似的东西:
SELECT f_test(), cte_test.* FROM cte_test
Run Code Online (Sandbox Code Playgroud)
OracleSELECT文档中给出了将内联函数和子查询分解子句结合起来的语法是:
WITH
FUNCTION f_test RETURN NUMBER IS
BEGIN
RETURN 1;
END;
cte_test ( id ) AS (
SELECT 1 FROM DUAL
)
SELECT f_test(),
c.*
FROM cte_test c;
Run Code Online (Sandbox Code Playgroud)
哪些输出:
F_TEST() | ID
-------: | -:
1 | 1
db<>在这里摆弄