I am creating a function in mysql(8.0.18), with 2 parameters (_id & _operator). Where _id is the record id which needs to be handled and _operator is the action to be performed.
This code is working fine. But, it's quite large and repeated:
DELIMITER $$
DROP FUNCTION IF EXISTS `deleteSubscriber` $$
CREATE FUNCTION `deleteSubscriber`(_id INTEGER, _operator VARCHAR(2)) RETURNS CHAR
BEGIN
IF (_operator = '=' OR ISNULL(_operator) = TRUE) THEN
DELETE FROM `subscribers` WHERE `id` = _id;
DELETE FROM `subscriber_packages` WHERE `id` = _id;
...
ELSEIF (_operator = '>=') THEN
DELETE FROM `subscribers` WHERE `id` >= _id;
DELETE FROM `subscriber_packages` WHERE `id` >= _id;
...
ELSEIF (_operator = '<=') THEN
DELETE FROM `subscribers` WHERE `id` <= _id;
DELETE FROM `subscriber_packages` WHERE `id` <= _id;
...
ELSEIF (_operator = '<>' OR _operator = '!=') THEN
DELETE FROM `subscribers` WHERE `id` != _id;
DELETE FROM `subscriber_packages` WHERE `id` != _id;
...
END IF;
RETURN NULL;
END$$
DELIMITER ;
Here is the code which I am trying. But, getting error:
DELIMITER $$
DROP FUNCTION IF EXISTS `deleteSubscriber` $$
CREATE FUNCTION `deleteSubscriber`(_id INTEGER, _operator VARCHAR(2)) RETURNS CHAR
BEGIN
DELETE FROM `subscribers` WHERE `id` _operator _id;
DELETE FROM `subscriber_packages` WHERE `id` _operator _id;
...
RETURN NULL;
END$$
DELIMITER ;
Is there a way to pass the query operator as a value to this function so I can remove the repeated code..?