2016-10-24 25 views
0

私は列にパラメータを使用する必要があり、列はNULL可能ではありません。パラメータはデフォルトでnullになります。どのようにnull値を制御するのですか? 私は価値を与えていないとき、それはnullとして値を考慮していると私のスクリプトが失敗しているので。あなたの助け 例をいただければ幸いです -oracle plsqlパラメータのデフォルト値はNULL

はTABLE1 COL1 = P_1からCOL2、 選択COL1を開始 ような手順のTEST1(P_1数のデフォルトはnull) を作成 - デフォルトのNULL;
end; /

enter code here 
+0

さて、あなたは1がコールに供給されていない場合は、列に配置する値をしたいですか? nullの代わりに何かを使う必要があります。または、引数がnullの場合はすべての値を選択しますか? (あなたも* into * something ...を選択する必要があります) –

+0

こんにちはアレックス、もし私が何か値を入れないなら、ステートメントは無視して、どこの条件なしでも実行します。基本的に私は2つのパラメータを使用しなければならない、1私は値を入れ、もう一つはデフォルトのnullです。 ,,,,, whrere col1 = p_1、col2 = p_2のようになります。 p_2は値を入れ、p_1はデフォルトのヌルになります – Ronnie710

+0

アレックス、私はアレックスを働いた – Ronnie710

答えて

1

クエリフィルタを条件付きにするorを使用することができます。

select col1, col2 
bulk collect into some_collectin 
from table1 
where p_1 is null or col1 = p_1 

p_1がnullの場合は、どちらかの引数が渡されていないか、引数がnullだったので、最初部分一致 - すべての行。 nullでない場合、最初の部分はどの行とも一致しないため、等価チェックが適用され、引数と一致する行のみがフィルタリングされます。

あなたが他の条件を持っている場合は、全体的なロジックが正しいことを確認するために括弧を使用することを忘れないでください:

where (p_1 is null or col1 = p_1) 
and ... 
+0

の節にコレクションを使用しています。どうもありがとう。私は朝から苦労していた。 – Ronnie710

関連する問題