Oracle
是否可以在 WITH 子句中同時包含子查詢和函式?
在 Oracle 12c 中,我們可以在 WITH 子句中包含子查詢:
WITH dept_count AS ( SELECT deptno, COUNT(*) AS dept_count FROM emp GROUP BY deptno) SELECT e.ename AS employee_name, dc.dept_count AS emp_dept_count FROM emp e JOIN dept_count dc ON e.deptno = dc.deptno;
我們還可以在 WITH 子句中包含函式:
WITH FUNCTION with_function(p_id IN NUMBER) RETURN NUMBER IS BEGIN RETURN p_id; END; SELECT with_function(id) FROM t1 WHERE rownum = 1
是否可以在單個查詢的 WITH 子句中同時包含子查詢和函式?
這只是想到的一個假設性問題。我沒有任何現實世界的例子,但有興趣看看它是如何工作的。我沒有足夠的經驗來提出一個有用的例子。
這是一個例子:
with function f1 return number is begin return 1; end; t1 as (select * from dual connect by level <= 3) select f1 from t1; / F1 ---------- 1 1 1
作為初學者,了解以傳統方式格式化 SQL 會很有幫助。
這是@Balazs 的答案,只是間隔更多:
with function f1 return number is begin return 1; end; t1 as ( select * from dual connect by level <= 3) select f1 from t1;