トップページに戻る    次のmodel句のサンプルへ    前のmodel句のサンプルへ

model句19 rules句の評価順序

SQLパズル

iterateを使った時のrules句の評価順序の実験

rules iterate(5)であれば、
処理1 rules句の上から1番目のrule適用を1回
処理2 rules句の上から2番目のrule適用を1回
として、
処理1,処理2,処理1,処理2,処理1,処理2,処理1,処理2,処理1,処理2
の順序で5回繰り返されるようです。

しかし、
Val[any] = 100
のような単純代入を含むケースは、例外でしょうか?

■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
select *
  from (select 1 as soeji,1 as Val from dual)
 model
dimension by(soeji)
measures(Val)
rules iterate(5)(
Val[any] = ITERATION_NUMBER*100,
Val[any] = Val[cv()]+7);

soeji  Val
-----  ---
    1  407

■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
select *
  from (select 1 as soeji,1 as Val from dual)
 model
dimension by(soeji)
measures(Val)
rules iterate(5)(
Val[any] = Val[cv()]/Val[cv()],
Val[any] = Val[cv()]+7);

soeji  Val
-----  ---
    1    7

model句11 work変数を用意して正規表現

■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
select *
  from (select 1 as soeji,1 as Val from dual)
 model
dimension by(soeji)
measures(Val)
rules iterate(5)(
Val[any] = 100,
Val[any] = Val[cv()]+1);

soeji  Val
-----  ---
    1  105

■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
select *
  from (select 1 as soeji,1 as Val from dual)
 model
dimension by(soeji)
measures(Val)
rules iterate(5)(
Val[any] = 100,
Val[any] = Val[cv()]+1,
Val[any] = 200,
Val[any] = Val[cv()]+5);

soeji  Val
-----  ---
    1  225