我对 PL/SQL 很陌生,我必须修改别人的存储过程。
是否可以在 select 中间添加 if 语句?我尝试打开游标并从不同表中选择一堆东西(不要问我为什么他们不使用连接)并返回游标的过程。我想做的是,有两列具有相似的数据,永远不能同时填充。因此,如果一个为空,则另一个应该有一个值,并且游标需要来自填充的值。那么... if 语句在 select 中?
我不会发布实际的代码,因为它会让你的眼球流血,但它看起来像......
open rc for
select l.data1 as ld1, l.data2 as ld2, b.data1 as bd1,
b.data2 as bd2, c.data1 as as c_d1, c.data2 as cd2
from tablel l, tableb b, tablec c
where blahblahblah
and c.data1 = [b.data3 if b.data4 is null, else b.data4]?
如果可能的话,我似乎无法理解语法。
最佳答案
您可以为此使用 NVL 或 COALESCE:
open rc for
select l.data1 as ld1, l.data2 as ld2, b.data1 as bd1,
b.data2 as bd2, c.data1 as as c_d1, c.data2 as cd2
from tablel l, tableb b, tablec c
where blahblahblah
and c.data1 = coalesce(b.data4,b.data3)
关于sql - PL/SQL...如果在一个选择中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1805908/