PL / SQL необязательно где - PullRequest
5 голосов
/ 04 мая 2011

Привет, у меня есть этот запрос в PL / SQL:

--Ver todos los atributos de las OL de una OS.
SELECT attr.swspattrdataid attr_data_id,
       att.swname attribute_swname,
       attr.swvalue attr_data_swvalue
  FROM sw_sp_attr_data attr, 
       sw_sp_attribute att
 WHERE swobjectid IN (SELECT swsporderlineid
                        FROM sw_sp_order_line
                       WHERE swsporderid = 21444963 --Orden 
                       **AND swsporderlineid = a_number**
                     );
   AND att.swspattributeid = attr.swspattributeid
 --AND att.swname LIKE '%%'                          --Filtrar por nombre

Мне нужно иметь фильтр AND между **, чтобы быть необязательным, поэтому независимо от того, поставлю ли я там число, запрос выполняется нормально, это возможно?

Спасибо!

Ответы [ 2 ]

7 голосов
/ 04 мая 2011

Объявите параметр со значением по умолчанию NULL.Поэтому, если он не передан в процедуру, он автоматически будет нулевым.

Затем измените условие на:

AND (a_number IS NULL ИЛИ swsporderlineid = a_number)

4 голосов
/ 04 мая 2011

Вы можете заменить предложение swsporderlineid = a_number на это предложение OR:

   WHERE      swobjectid IN (SELECT swsporderlineid
                             FROM sw_sp_order_line
                             WHERE swsporderid = 21444963 --Orden 
                               AND (swsporderlineid = a_number OR a_number IS NULL));

Следовательно, если a_number равно нулю, вторая строка оценивается как true для всех записей, что позволяет продолжить запрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...