Ниже приведен упрощенный пример созданной мной хранимой процедуры.
DELIMITER //
CREATE PROCEDURE test (IN val1 INT, IN val2 INT)
BEGIN
UPDATE TABLE SET value=val1 WHERE cond=val2;
END //
DELIMITER ;
Теперь предположим, что я хочу сделать условие необязательным.Я мог бы сделать это, установив val2
в NULL
при вызове процедуры, а затем используя оператор IF
, чтобы использовать условие, если значение не NULL
.(В моем случае можно с уверенностью предположить, что cond=NULL
не является допустимым условием для проверки.)
Это работает, но запрос UPDATE
, который у меня есть, намного сложнее, и его дублирование кажется неудачным.это просто сделать условие необязательным.Я мог бы динамически построить строку запроса и перейти к EXECUTE
, но это тоже не подходит, и я теряю проверку синтаксиса.
Есть предложения?Спасибо!