Условное предложение WHERE в хранимой процедуре MySQL - PullRequest
2 голосов
/ 15 марта 2011

Ниже приведен упрощенный пример созданной мной хранимой процедуры.

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, но это тоже не подходит, и я теряю проверку синтаксиса.

Есть предложения?Спасибо!

1 Ответ

6 голосов
/ 15 марта 2011

Попробуйте это:

UPDATE yourtable
SET value = val1
WHERE cond = val2 OR val2 IS NULL
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...