Hey, I have this query in 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
I need to have the AND filter between ** to be optional, so no matter if I put a number there the query runs OK, is this posible?
Thanks!
Declare the parameter with a default value of NULL. So in case it is not passed to the procedure it will automatically be null.
Then change the condition to:
AND (a_number IS NULL OR swsporderlineid = a_number)
You can replace the swsporderlineid = a_number
clause with this OR
clause:
WHERE swobjectid IN (SELECT swsporderlineid
FROM sw_sp_order_line
WHERE swsporderid = 21444963 --Orden
AND (swsporderlineid = a_number OR a_number IS NULL));
Therefore, if a_number
is null, the second line evaluates to true
for all records, allowing the query to continue.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With