iT邦幫忙

0

pl/sql where條件 nvl 問題

'&N_START_DATE''&N_END_DATE'為必填變數,'&N_AR_T_NUM'可填可不填,只能用一段select來做搜尋。
因為table 中TRX_NUMBER欄位一定會有數值,所以當TRX_NUMBER='&N_AR_T_NUM'時,'&N_AR_T_NUM'未填=null就找不出資料
以下這段script以測試沒問題,最後一行指定使用nvl判斷
select *
from EVELYN_TEST
WHERE 1=1
AND TRX_DATE between to_date('&N_START_DATE','YYYYMMDD' )and (to_date('&N_END_DATE','YYYYMMDD'))
or TRX_NUMBER='&N_AR_T_NUM' or ('&N_AR_T_NUM'=null and TRX_DATE between to_date('&N_START_DATE','YYYYMMDD' )and (to_date('&N_END_DATE','YYYYMMDD')));
這是我使用nvl 判斷報錯
or TRX_NUMBER='&N_AR_T_NUM' or nvl('&N_AR_T_NUM', TRX_DATE between to_date('&N_START_DATE','YYYYMMDD' )and (to_date('&N_END_DATE','YYYYMMDD')))
請問該如何修改呢?感謝

尚未有邦友回答

立即登入回答