我的函数中有一个可选参数,如果没有指定,我希望显示所有记录,如果是,则只显示具有指定id的记录。我尝试了此代码,但它不起作用。原则是如果p\u pc\u id在表中,那么pc\u id=p\u pc\u id将显示,如果p\u pc\u id为空,则需要1=1
SELECT PC_ID,CLIENT_NUMBER,TRANSACTION_DATE,AMOUNT FROM history_table
WHERE NVL(NVL(PC_ID,P_PC_ID),'X') = NVL(P_PC_ID,'X')
谢谢
2条答案
按热度按时间hfsqlsce1#
除了gmb的好答案,如果你想使用
NVL
然后你可以这样做:如果
P_PC_ID
如果为空,则它将进行比较PC_ID
与PC_ID
,这永远是真的。nlejzf6q2#
我建议使用布尔逻辑而不是嵌套逻辑
NVL()
学生:if参数
p_pc_id
是null
,第一个条件为true,返回表中所有行;否则,第一个条件为false,并且只有pc_id
等于返回的参数。