1

障壁: 何も作成できません。GTT や PROC などはありません。Exadata データ レイクにクエリを実行しており、作成したスクリプトはすべて Toad または SQL Developer から実行されます。プラットフォームは Oracle 11g です。

日付範囲と DNIS (基本的に、IVR コール フローを識別する番号) の 2 種類のパラメーターに依存するセルフサービス レポートを作成しています。少なくとも 1 つの DNIS があり、最大で 3 つある可能性があります。

WHERE DNIS IN ('1234567', '9876543', '1232345')

:DNIS1、:DNIS2、および :DNIS3 の 3 つのバインド変数を作成したいと考えています。これらの変数には、1 つ以上の変数が設定され、そうでない場合は NULL が設定されます。

理論的には:

WHERE DNIS IN (:DNIS1, :DNIS2, :DNIS3)

おそらく、より良い質問は次のとおりです。私の制限を考えると、動的な IN() 句をどのように作成しますか? これは可能ですか?

4

1 に答える 1

0

Sudipta Mondal (コメントを参照) のおかげで、答えは TO_CHAR() でバインド変数をラップすることでした

WHERE DNIS IN (to_char(:DNIS1), to_char(:DNIS2), to_char(:DNIS3) )
于 2017-05-26T18:21:58.683 に答える