Страницы

Поиск по вопросам

понедельник, 10 июня 2019 г.

Выбор всех строк в функции

Добрый день! Создаю функцию, суть в том, что в случае, если один из входных параметров = 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 может вызвать небольшое проседание производительности на очень больших выборках).

Комментариев нет:

Отправить комментарий