当p_type为null时,我必须提供两个值,即('value1','value2')。 如何在where子句中使用Case或Decode语句实现此目的? 在PL / SQL块下面无效,并抛出缺少关键字的错误:语句被忽略。
Declare
l_xml CLOB;
p_type varchar2(200) := 'value1'; -- can be null
begin
SELECT XMLAGG (
XMLELEMENT ("Address",
(XMLFOREST (usg.code as "CODE",
usg.date as "Date"
)))) .getclobval()
into l_xml
FROM usg
WHERE usg.number = '12345'
AND usg.code = p_type
OR CASE WHEN p_type IS NULL THEN usg.code in ('value1','value2') END;
dbms_output.put_line (l_xml);
end;
答案 0 :(得分:0)
在此特定实例中,您不需要CASE。
WHERE usg.number = '12345'
AND (usg.code = p_type
OR
(p_type IS NULL AND usg.code in ('value1','value2'))
)
答案 1 :(得分:-2)
case语句应该是select语句的一部分,而不是条件