我正在尝试根据非null条件编写动态SQL语句。基本上我有一个存储过程,它有2个输入参数,即ip1和ip2。 ip1将始终具有值,但ip2可能具有或不具有作为i / p参数的值。所以我试图用下面的案例编写一个查询。我基本上只是在ip2 id不为null的情况下尝试在where子句中添加ip2条件作为i / p参数。如果ip2为null,则只需添加ip1条件。但是这个查询引发了错误。你能告诉我哪里出错吗?
SELECT decode(COUNT(1),0,'N','Y')
INTO v_count
FROM table C
WHERE C.column1 = ip1
AND (CASE
WHEN ip2 IS NOT NULL
THEN c.column2 = ip2
END);
答案 0 :(得分:1)
SELECT decode(COUNT(1),0,'N','Y')
INTO v_count
FROM table C
WHERE C.column1 = ip1
AND (ip2 IS NULL OR c.column2 = ip2);
答案 1 :(得分:1)
这也有效:
SELECT decode(COUNT(1),0,'N','Y')
INTO v_count
FROM table C
WHERE C.column1 = @ip1
AND C.column2 = isnull(@ip2, C.column2)
...请注意,如果colmn2可以包含NULL值,这将不起作用。