2016-07-06 14 views
1

サブクエリのファクタリング句の大きなファンです。oracle 12c plsql宣言でサブクエリのファクタリング句を使用する

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

とOracle 12cは今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 

でPL/SQLの宣言セクションを含むが、私は彼らが一緒に動作するように見えることはできません、それは可能ですか?

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

見ての通り、構文は次のとおりです。

WITH [ plsql_declarations ] [ subquery_factoring_clause ] 

これは、PL/SQLはこのように、SQLクエリの残り、その後、最初に行かなければならないことを意味します

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; 
関連する問題