我正在使用pl / sql过程。我有一个初始化变量myvar,我想检查它的值:如果它不包含'Z',我希望它包含'P'。
我目前正在这样做:
myvar := decode(myvar,'Z','Z','P');
我只是想知道是否有更简单的方法来做到这一点。我的意思是,解码已经很简单,但我觉得在变量已经存在的时候指定变量的内容很奇怪!
如果存在这样的功能,它将如下所示:
Function myfunction(a In Varchar2, b In Varchar2, c In Varchar2)
Return Varchar2
Is
Begin
if a <> b
then
return c;
end if;
return a;
End myfunction;
任何帮助将不胜感激!
答案 0 :(得分:11)
没有内置功能完全符合您的要求。
你可以使用CASE而不是DECODE:
CASE myvar WHEN 'Z' THEN 'Z' ELSE 'P' END
虽然它没有缩短!
答案 1 :(得分:2)
将你的这个功能放到程序的声明部分并使用它!
答案 2 :(得分:1)
我同意最好的选择是使用CASE表达式:
CASE myvar WHEN 'Z' THEN 'Z' ELSE 'P' END
如果您对DECODE感到满意,另一种方法是运行此查询:
SELECT decode(myvar,'Z','Z','P')
INTO myvar
FROM DUAL;
答案 3 :(得分:0)
要回答原来是否有更简单方法的问题,还有:
if myvar <> 'Z' then
myvar := 'P'
end if;