如果是pl / sql,可以写一行吗?我只是好奇。
我想写这个片段:
IF ( i.DECISAO_AT = 'S')
THEN 'PA'
ELSE 'I'
END IF;
我想知道是否可以将它写在一行中,就像java一样。像这样:
IF ( i.DECISAO_AT = 'S') ? 'PA' : 'I' ;
谢谢!
答案 0 :(得分:8)
你可以像其他人一样在一行上写IF ... ELSE ... END IF;
;但不,你不能按照你的建议做,并像“Java一样”写出来:
IF ( i.DECISAO_AT = 'S') ? 'PA' : 'I' ;
PL / SQL不理解Java ?
和:
语法,并且没有自己的三元运算符。您只能使用what is described in the documentation。对于这个特定的陈述,最接近我认为你要问的是,case
:
CASE WHEN i.DECISAO_AT = 'S' THEN 'PA' ELSE 'I' END
或者可能是decode
,正如xQbert已在评论中提出的那样。虽然不再是“IF”。
答案 1 :(得分:3)
如果代码在一行或多行中,PL/SQL
执行代码没有问题。重要的是语法是正确的。
答案 2 :(得分:3)
您可以使用可以内联使用的DECODE
语句:
Oracle / PLSQL中DECODE函数的语法是:
DECODE( expression , search , result [, search , result]... [, default] )
答案 3 :(得分:2)
当然可以,但是当你需要调试时,如果进行多次测试,这将是一个痛苦。将其保存在单独的线路上,从而更容易阅读,调试,评论并且更容易(因此更便宜)进行维护。下一个工作的人会感谢你。
我读了一本书(我认为它是" C元素的风格")曾经:"提防聪明,聪明的杀戮")。保持简单易行。在您需要维护代码之后的代码。
答案 4 :(得分:0)
您可以将DECODE与SELECT INTO一起使用,如下所示。 “ my_var”将是一个声明为保留解码值的变量。
SELECT DECODE(i.DECISAO_AT, 'S', 'PA', 'I') INTO my_var FROM DUAL;