Я довольно новый, когда дело доходит до PL/SQL, и мне нужно изменить чужую хранимую процедуру.PL/SQL ... если внутри выбрать?
Можно ли добавить оператор 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]?
Я не могу получить синтаксис, если это возможно ,
COALESCE предпочтительнее, потому что это ANSI - он будет работать на Oracle, SQL Server, MySQL ... –
Также NVL2 также является опцией: http://techonthenet.com/oracle/functions/nvl2.php –
, что soudns awesome ... за исключением случаев, когда я пытаюсь использовать coalesce или NVL с одним из значений внутри, являющимся выбором из другой таблицы, я получаю «столбец не может быть внешним соединен с подзапросом» это возможно? coalesce (b.data4, (выберите d.data4 из dabled d, где d.data3 = b.data3))? – 2009-11-27 15:26:17