0

1 つまたは複数のパラメーターを WITH 句のクエリに渡すことができるかどうか疑問に思っています。非常に簡単な方法で、次のようなことを行います (明らかに、機能していません!):

with qq(a) as (
  select a+1 as increment 
    from dual
)
select qq.increment 
  from qq(10); -- should get 11

もちろん、with 句はサブクエリにある必要があり、渡すパラメーターはメインクエリから取得した値であるため、これから行う使用ははるかに複雑です....詳細はリクエストに応じて... ;-)

ヒントをありがとう

4

1 に答える 1

0

OK .....これが全体の取引です:

select appu.* from 
(<quite a complex query here>) appu
where not exists 
      (select 1 
             from dual 
             where appu.ORA_APP IN 
                   (select slot from 
                      (select distinct slots.inizio,slots.fine from 
                            (
                             with 
                             params as (select 1900 fine from dual)
                             --params as (select app.ora_fine_attivita fine 
                             -- where app.cod_agenda = appu.AGE
                             -- and app.ora_fine_attivita = appu.fine_fascia
                             --and app.data_appuntamento = appu.dataapp
                             --)
                             , 
                             Intervals (inizio, EDM) as
                             ( select 1700, 20 from dual
                             union all
                             select inizio+EDM, EDM from Intervals join params on 
                             (inizio <= fine)
                             )
                             select * from Intervals join params on (inizio <= fine)
                       ) slots
                    ) slots
        where slots.slot <= slots.fine
      )
      order by 1,2,3;

あまり詳しく説明しなくても、where 条件は、(外側の) 'slots' テーブルに作成されるはずのレコードの 1 つと 'appu.ORA_APP' が一致するレコードを削除する必要があります。例で使用されている定数は、レコードのサブセット (単一の 'appu.AGE' 値) に適しています。そのため、コメント化された 'params' テーブルを使用するためにパラメーター化する必要があります (次に、 「間隔」テーブル。

ゼロから分析するのは簡単ではないことはわかっていますが、できるだけ明確にするように努めました。必要に応じて数値例をお気軽にお尋ねください....ありがとう

于 2016-11-24T13:12:45.420 に答える