WITH
ステートメントを使用して複数の操作を実行する方法はありますか?
何かのようなもの
WITH T AS
(
SELECT * FROM Tbl
)
BEGIN
OPEN P_OUTCURSOR FOR
SELECT * FROM T;
SELECT COUNT(*) INTO P_OUTCOUNT FROM T;
END;
いくつかのデータとその数を選択したい...
CTEの後に記述できるのは1つだけです。ただし、前のCTEに基づいて後続のCTEを定義できます。
WITH t1 AS (
SELECT a, b, c
FROM table1
)
, t2 AS (
SELECT b
FROM t1
WHERE a = 5
)
SELECT *
FROM t2;
行をカウントし、同じ結果セットからrefカーソルを生成しようとしている場合、次のいずれかを実行する方が適切な場合があります。
最後に、クエリが単純な場合は、カウント用に1回、カーソル用にもう一度記述します。この場合、シンプルさと読みやすさが [〜#〜] 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;
一時的な結果セットを格納する「通常の」Oracleの方法(必要な場合)は GTT:GLOBAL TEMPORARY
テーブル 。