2016-07-06 3 views
1

하위 쿼리 인수 절을 크게 좋아합니다.oracle 12c plsql 선언과 함께 하위 쿼리 팩터링 절을 사용합니다.

WITH t1 as (select 1 as id from dual) 
select * from t1; 

및 오라클 12c는 이제 WITH 절에서 PL/SQL 선언 섹션을 포함

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 t1 as (select 1 as id from dual) 
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; 

답변

3

구문을 참조하십시오 :
https://docs.oracle.com/database/121/SQLRF/statements_10002.htm#SQLRF01702

enter image description here

plsql_declarations
enter image description here

subquery_factoring_clause enter image description here

,536,913 63,210

보시다시피, 구문은 다음과 같습니다

WITH 
    FUNCTION with_function(p_id IN NUMBER) RETURN NUMBER IS 
    BEGIN 
    RETURN p_id; 
    END; 
t1 as (select 1 as id from dual) 
SELECT with_function(id) 
FROM t1 
WHERE rownum = 1; 
:

WITH [ plsql_declarations ] [ subquery_factoring_clause ] 

이 PL/SQL이 방법으로, 먼저 SQL 쿼리의 다음 나머지를 이동해야한다는 것을 의미합니다