В MySQL создал хранимую процедуру. Не уверен, что правильно, т.к. необходимо ли в OUT указывать что вернуться может множество строк?:
CREATE PROCEDURE `myProcedure` (IN id INT)
BEGIN
SELECT * FROM product WHERE category_id = id;
END
1) Главный вопрос, как вызвать и как вызвать хранимую процедуру из PHP правильно, нужно ли использовать подготовленные запросы?
2) Вопрос возник, когда вызывал хранимую процедуру из phpMyAdmin используя SQL CALL myProcedure(157)
отображалось 12 строк. При создании хранимой процедуры параметры OUT я не указывал. А при попытке вызвать CALL myProcedure(9999)
с несуществующим ID я ожидал, что вернется 0 строк, а вернулось:
Ошибка
Статический анализ:
Найдено 1 ошибок при анализе.
Неизвестное ключевое слово. (near "ON" at position 25)
SQL запрос:
SET FOREIGN_KEY_CHECKS = ON;
Ответ MySQL:
#2014 - Commands out of sync; you can't run this command now
Мне кажется что я что то сделал не так, т.к. при запросе с не существующем id должно вернуться просто 0 строк.
P.S: Запрос я упростил, возможно зря и это лишь собьет с толку. Вот полный запрос:
DELIMITER //
CREATE PROCEDURE `getProductById` (IN id INT)
BEGIN
SELECT product.id, product.price, product.img, product.store_address, category.name, shop.name
FROM product
INNER JOIN category ON product.category_id = category.id
INNER JOIN shop ON product.shop_id = shop.id
WHERE category.id = id;
END //
Лучше использовать хранимую процедуру или функцию?
Я вроде создавал не процедуру а функцию, и перезаписывал ее аж 7 раз, так как каждый раз что то было не так а вызывал я её так:
SELECT название_функции( значение переменной );
Этого мне было достаточно
Но чаще всего я использовал такую конструкцию (пример)
SELECT t1.*, название_функции( t1.`название_столбца` )
FROM `название_таблицы` t1;
в этом случае моя самописная функция отдавала одно значение и оно встраивалось в результат ответа SELECT
в каждую строку
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Всем приветНужно получить данные из vTiger CRM
Есть три массива заполненные числами типа float и мне надо взять значения элементов из массива и подставить в формулу для вычисленияКак это...