次のようなクエリがあります。
select empno,name
from emp
where job = 'CLERK'
and empno = :empno
null の empno を渡すと、job = 'CLERK' の条件に一致するすべてのレコードを表示したいと思います。empno が特定の番号の場合、ジョブと empno でフィルタリングする必要があります。
PLSQLを使わずにSQLでこれを行うには?
and (empno = :empno or :empno is null)
パスパラメータがnullの場合、実際の列値に置き換えるよりもこのようなもの...
select empno,name from emp where
job = 'CLERK'
and empno = NVL(:empno ,empno)
NVL の仕組み
NVL 関数の構文は次のとおりです。
NVL( string1, replace_with )
string1 is the string to test for a null value.
replace_with is the value returned if string1 is null.