不确定这是否有意义,我正在尝试编辑一个现有的sproc,将一个变量添加到“Where”子句中,以返回所有值,无值或每条记录,而不管Value。 / p>
我在Where子句中使用Case When / Then语句。
WHERE
CASE (@work)
WHEN 'Y' THEN part.corpid = ( 'Work EMP' , 'Work EMP 10' , 'Work FAM' )
WHEN 'N' THEN part.corpid != ( 'Work EMP' , 'Work EMP 10' , 'Work FAM' )
ELSE part.corpid = *
END
设置是否为Y,然后仅返回员工及其家属,如果N则不返回任何员工或其家人,如果变量中为NULL,则返回所有内容。
我不知道我在这里搞砸了什么,我在Y区继续犯错误。
答案 0 :(得分:8)
您应该能够使用以下WHERE
子句:
WHERE
(
@work = 'Y'
AND part.corpid IN ( 'Work EMP' , 'Work EMP 10' , 'Work FAM' )
)
OR
(
@work = 'N'
AND part.corpid NOT IN ( 'Work EMP' , 'Work EMP 10' , 'Work FAM' )
)
OR
(
@work is null
-- add other filters here if needed
-- no need to include the part.corpid because all will be included
)
答案 1 :(得分:0)
这是Oracle示例:
CASE grade
WHEN 'A' THEN dbms_output.put_line('Excellent');
WHEN 'B' THEN dbms_output.put_line('Very Good');
WHEN 'C' THEN dbms_output.put_line('Good');
WHEN 'D' THEN dbms_output.put_line('Fair');
WHEN 'F' THEN dbms_output.put_line('Poor');
ELSE dbms_output.put_line('No such grade');
END CASE;