Хранимая процедура — это способ объединения повторяющихся действий. В хранимых процедурах можно объявлять переменные, управлять потоками данных, а также применять другие техники программирования.
Листинг 3.5. SQL-команда для создания процедуры.
DELIMITER $$.
USE `kans_tovari`$$.
DROP PROCEDURE IF EXISTS `procedure1`$$.
CREATE DEFINER=`root`@`localhost` PROCEDURE `procedure1`().
BEGIN.
SELECT proizvoditeli.`naz_proizvod`, tovari.`naz_tovara`, tovari.`sena`, tovari.`kol` FROM tovari, proizvoditeli.
WHERE tovari.`id_proizvod`=proizvoditeli.`id_proizvoditel`;
END$$.
DELIMITER;
CALL procedure1;
В этой процедуре имеются Select запрос из двух таблиц и результат вызывается с помощью команда `Call procedure1'.
Рис 3.3. Результат запуска процедура
На рисунке 3.3. приведено результат листинга 3.5.
Дальше создаем еще одну процедуру которая выводить название: товара, категория, производства; цена и количества товара.
Листинг 3.6. Создание процедуры.
DELIMITER $$.
USE `kans_tovari`$$.
DROP PROCEDURE IF EXISTS `new1`$$.
CREATE DEFINER=`root`@`localhost` PROCEDURE `new1`(IN id_tov INT).
BEGIN.
DROP TABLE IF EXISTS `selectproc`;
CREATE TABLE selectproc (id_t INT, naz_t VARCHAR (40), naz_k VARCHAR (40), naz_p VARCHAR (40), sena_t INT, kol_t INT);
INSERT INTO selectproc SELECT tovari.`id_tovara`, tovari.`naz_tovara`, katalog_tov.`naz_katalog`, proizvoditeli.`naz_proizvod`, tovari.`sena`, tovari.`kol`.
FROM tovari, proizvoditeli, katalog_tov.
WHERE tovari.`id_kategoria`=katalog_tov.`id_katalog` AND tovari.`id_proizvod`=proizvoditeli.`id_proizvoditel`;
END$$.
DELIMITER;
Рис 3.4. Результат запуска процедура.
На рисунке 3.4. показано результат листинга 3.6.