Необязательные параметры в хранимых процедурах Mysql

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

дубликат: stackoverflow.com/questions/12652241/…

Patrick Allaert 06.02.2014 13:35
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
7
1
21 073
3

Ответы 3

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

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

Обходной путь (несколько неуклюжий), который я использовал, заключался в том, чтобы определить ряд параметров, которые, как я думал, я мог бы использовать, а затем проверить, является ли значение дополнительного параметра НЕ 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);

Функция IFNULL () очень хорошо вписывается в этот контекст; Я просто встроил его в список VALUES запроса INSERT.

David A. Gray 06.03.2018 01:12

Другие вопросы по теме