Добрый день!
Создаю функцию, суть в том, что в случае, если один из входных параметров = 1, то необходимо взять только одну строку (потом пойдет в цикл), если параметр не задан - то необходимо взять все строки)
Решил идти через decode, но не знаю, как обозначить в этом decode, что если параметр не равен 1, то "бери все".
Выглядит это пока так
where r.equipment_id = p_EquipmentId
and rownum = decode(p_ForKR, 1, 1, X)
где Х обозначено место, куда нужно прописать это самое "бери все".
Если есть вариант более красивый и правильный - готов его применить, только наставьте.
Oracle 9i
Ответ
В вашем запросе можно вместо X взять rownum, тогда, если параметр p_ForKR не равен 1, у вас будет rownum = rownum Еще подобную конструкцию можно записать с помощью nvl, coalesce или CASE, но это в принципе другой способ записать то же самое (разве что nvl может вызвать небольшое проседание производительности на очень больших выборках).
Комментариев нет:
Отправить комментарий