Необязательные параметры в хранимых процедурах Mysql - PullRequest
7 голосов
/ 18 сентября 2008

Как создать необязательный параметр в хранимой процедуре mysql?

Ответы [ 3 ]

4 голосов
/ 09 октября 2008

Необязательные параметры не поддерживаются в хранимых процедурах mySQL, и в настоящее время нет планов по добавлению этой функции в настоящее время. Я бы рекомендовал передать значение null для необязательных параметров.

4 голосов
/ 29 августа 2013

(несколько неуклюжий) обходной путь, который я использовал, состоял в том, чтобы определить ряд параметров, которые, как я думал, я мог бы использовать, и затем проверить, чтобы узнать, не является ли значение необязательного параметра NOT NULL перед его использованием:

CREATE PROCEDURE add_product(product_name VARCHAR(100), product_price FLOAT,
                             cat1 INT, cat2 INT, cat3 INT)
-- The cat? parameters are optional; provide a NULL value if not required
BEGIN

  ...

  -- Add product to relevant categories  
  IF cat1 IS NOT NULL THEN
    INSERT INTO products_to_categories (products_id, categories_id) VALUES (product_id, cat1);
  END IF;
  IF cat2 IS NOT NULL THEN
    INSERT INTO products_to_categories (products_id, categories_id) VALUES (product_id, cat2);
  END IF;
  IF cat3 IS NOT NULL THEN
    INSERT INTO products_to_categories (products_id, categories_id) VALUES (product_id, cat3);
  END IF;

END

Если я не хочу использовать параметр при вызове хранимого, я просто передаю значение NULL. Вот пример вызываемой выше хранимой процедуры:

CALL add_product("New product title", 25, 66, 68, NULL);
4 голосов
/ 18 сентября 2008

Согласно этой ошибке , в настоящее время нет способа создать необязательные параметры.

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