使用多个相等条件进行解码?

问题描述 投票:0回答:1

有什么办法可以简化这个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;
sql oracle plsql
1个回答
0
投票

如果您想返回

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;

但其中任何一个是否比您已有的“更简单”是值得怀疑的。为什么不喜欢呢?

© www.soinside.com 2019 - 2024. All rights reserved.