有什么办法可以简化这个DECODE函数吗?请注意,变量将与 NULL 进行比较以验证它们是否为空。
CREATE FUNCTION FNC_001
(VAR_1 IN OUT VARCHAR, VAR_2 IN OUT VARCHAR, VAR_3 IN OUT VARCHAR) RETURN VARCHAR IS
ERR_ERRFLG CHAR(1);
BEGIN
VAR_1 := TRIM(VAR_1);
VAR_2 := TRIM(VAR_2);
VAR_3 := TRIM(VAR_3);
SELECT DECODE(NULL, VAR_1, 'Y', VAR_2, 'Y', VAR_3, 'Y', 'N') INTO ERR_ERRFLG
FROM DUAL;
RETURN ERR_ERRFLG;
END;
如果您想返回
null
如果任何参数为空,那么一个选择是使用例如
return case when greatest(var_1, var_2, var_3) is null then 'Y'
else 'N'
end;
另一个可能是
return case when var_1 is null or var_2 is null or var_3 is null then 'Y'
else 'N'
end;
但其中任何一个是否比您已有的“更简单”是值得怀疑的。为什么不喜欢呢?