जवाबों:
आप सीटीई के बाद केवल एक बयान दे सकते हैं। हालाँकि, आप बाद के CTE को पिछले एक के आधार पर परिभाषित कर सकते हैं:
WITH t1 AS (
SELECT a, b, c
FROM table1
)
, t2 AS (
SELECT b
FROM t1
WHERE a = 5
)
SELECT *
FROM t2;
यह देखते हुए कि आप पंक्तियों को गिनने की कोशिश कर रहे हैं और एक ही परिणाम सेट से रेफ कर्सर ले सकते हैं, यह निम्न में से एक करने के लिए अधिक उपयुक्त हो सकता है:
अंत में, यदि क्वेरी काफी सरल है, तो बस एक बार गिनती के लिए और फिर से कर्सर के लिए लिखें। सादगी और पठनीयता इस मामले में DRY सिद्धांत को टक्कर देती है ।
नहीं, CTE या with
क्लॉज को एकल कथन के दायरे में परिभाषित किया गया है
कभी-कभी आप एकल कथन के साथ अपेक्षा से अधिक कर सकते हैं, जैसे:
with w as (select v from t3)
insert all into t1(v) values(v)
into t2(v) values(v)
select v from w;
अस्थायी परिणाम सेट (यदि आपको करना है) को स्टोर करने के लिए 'सामान्य' ओरेकल तरीका जीटीटी:
GLOBAL TEMPORARY
टेबल का उपयोग करना है ।