【发布时间】:2017-01-20 23:26:54
【问题描述】:
对不起,如果这是一个愚蠢的问题,我是 PL/SQL 的新手。 我有一个从表中检索数据的 PL/SQL 存储过程。 有 2 个可选参数可以为空。如果它们不为 null,它们应该是 WHERE 子句的一部分。
这是选择:
SELECT DISTINCT PN.PART_NUMBER, PN.SHORT_CODE, DES.DESCRIPTION
FROM MAS_PART PN
LEFT JOIN CF_DESCRIPTION DES
ON PN.LOCAL_DESCRIPTION_ID = DES.DESCRIPTION_ID
WHERE PN.PART_CODE = 'M'
AND PN.PART_TYPE_ID = IN_PART_TYPE_ID
AND PN.PART_GROUP_ID = IN_PART_GROUP_ID
ORDER BY PN.PART_NUMBER;
这两个变量是 IN_PART_TYPE_ID 和 IN_PART_GROUP_ID。有没有办法仅在它们不为空时评估关于这两个变量的 WHERE 子句?还是唯一的方法是使用 IF 子句重复 SELECT 3 次并更改 WHERE 子句?
【问题讨论】:
-
where ( col = param or param is null) and ...