sql - урок 15. хранимые процедуры. часть 1.

DOCX 7 pages 232.1 KB Free download

Page preview (5 pages)

Scroll down 👇
1 / 7
хранимые процедуры. создание, использование и удаление. sql - урок 15. хранимые процедуры. часть 1. как правило, мы в работе с бд используем одни и те же запросы, либо набор последовательных запросов. хранимые процедуры позволяют объединить последовательность запросов и сохранить их на сервере. это очень удобный инструмент, и сейчас вы в этом убедитесь. начнем с синтаксиса: create procedure имя_процедуры (параметры) begin операторы end параметры это те данные, которые мы будем передавать процедуре при ее вызове, а операторы - это собственно запросы. давайте напишем свою первую процедуру и убедимся в ее удобстве. в уроке 10, когда мы добавляли новые записи в бд shop, мы использовали стандартный запрос на добавление вида: insert into customers (name, email) value ('иванов сергей', 'sergo@mail.ru'); т.к. подобный запрос мы будем использовать каждый раз, когда нам необходимо будет добавить нового покупателя, то вполне уместно оформить его в виде процедуры: create procedure ins_cust(n char(50), e char(50)) begin insert into customers …
2 / 7
; end // итак, процедура создана. теперь, когда нам понадобится ввести нового покупателя нам достаточно ее вызвать, указав необходимые параметры. для вызова хранимой процедуры используется оператор call, после которого указывается имя процедуры и ее параметры. давайте добавим нового покупателя в нашу таблицу покупатели (customers): call ins_cust('сычов валерий', 'valera@gmail.ru')// согласитесь, что так гораздо проще, чем писать каждый раз полный запрос. проверим, работает ли процедура, посмотрев, появился ли новый покупатель в таблице покупатели (customers): появился, процедура работает, и будет работать всегда, пока мы ее не удалим с помощью оператора drop procedure название_процедуры. как было сказано в начале урока, процедуры позволяют объединить последовательность запросов. давайте посмотрим, как это делается. помните в уроке 11 мы хотели узнать, на какую сумму нам привез товар поставщик "дом печати"? для этого нам пришлось использовать вложенные запросы, объединения, вычисляемые столбцы и представления. а если мы захотим узнать, на какую сумму нам привез товар другой поставщик? придется составлять новые …
3 / 7
создадим представление, которое будет выводить идентификатор поставщика (id_vendor), идентификатор продукта (id_product), количество (quantity), цену (price) и сумму (summa) из трех таблиц поставки (incoming), журнал поставок (magazine_incoming), цены (prices): create view report_vendor as select incoming.id_vendor, magazine_incoming.id_product, magazine_incoming.quantity, prices.price, magazine_incoming.quantity*prices.price as summa from incoming, magazine_incoming, prices where magazine_incoming.id_product= prices.id_product and magazine_incoming.id_incoming= incoming.id_incoming; а потом создадим запрос, который просуммирует суммы поставок интересующего нас поставщика, например, с id_vendor=2: select sum(summa) from report_vendor where id_vendor=2; вот теперь мы можем объединить два этих запроса в хранимую процедуру, где входным параметром будет идентификатор поставщика (id_vendor), который будет подставляться во второй запрос, но не в представление: create procedure sum_vendor(i int) begin create view report_vendor as select incoming.id_vendor, magazine_incoming.id_product, magazine_incoming.quantity, prices.price, magazine_incoming.quantity*prices.price as summa from incoming, magazine_incoming, prices where magazine_incoming.id_product= prices.id_product and magazine_incoming.id_incoming= incoming.id_incoming; select sum(summa) from report_vendor where id_vendor=i; end // проверим работу процедуры, с разными входными параметрами: call sum_vendor(1)// call sum_vendor(2)// call sum_vendor(3)// как видите, процедура срабатывает …
4 / 7
процедура будет лишь к нему обращаться, но не создавать его. предварительно не забудет удалить уже созданную процедуру и представление: drop procedure sum_vendor// drop view report_vendor// create view report_vendor as select incoming.id_vendor, magazine_incoming.id_product, magazine_incoming.quantity, prices.price, magazine_incoming.quantity*prices.price as summa from incoming, magazine_incoming, prices where magazine_incoming.id_product= prices.id_product and magazine_incoming.id_incoming= incoming.id_incoming// create procedure sum_vendor(i int) begin select sum(summa) from report_vendor where id_vendor=i; end // проверяем работу: call sum_vendor(1)// call sum_vendor(2)// call sum_vendor(3)// второй вариант - прямо в процедуре дописать команду, которая будет удалять представление, если оно существует: create procedure sum_vendor(i int) begin drop view if exists report_vendor; create view report_vendor as select incoming.id_vendor, magazine_incoming.id_product, magazine_incoming.quantity, prices.price, magazine_incoming.quantity*prices.price as summa from incoming, magazine_incoming, prices where magazine_incoming.id_product= prices.id_product and magazine_incoming.id_incoming= incoming.id_incoming; select sum(summa) from report_vendor where id_vendor=i; end // перед использованием этого варианта не забудьте удалить процедуру sum_vendor, а затем проверить работу: как видите, сложные запросы или их последовательность действительно проще один раз оформить в хранимую …
5 / 7
sql - урок 15. хранимые процедуры. часть 1. - Page 5

Want to read more?

Download all 7 pages for free via Telegram.

Download full file

About "sql - урок 15. хранимые процедуры. часть 1."

хранимые процедуры. создание, использование и удаление. sql - урок 15. хранимые процедуры. часть 1. как правило, мы в работе с бд используем одни и те же запросы, либо набор последовательных запросов. хранимые процедуры позволяют объединить последовательность запросов и сохранить их на сервере. это очень удобный инструмент, и сейчас вы в этом убедитесь. начнем с синтаксиса: create procedure имя_процедуры (параметры) begin операторы end параметры это те данные, которые мы будем передавать процедуре при ее вызове, а операторы - это собственно запросы. давайте напишем свою первую процедуру и убедимся в ее удобстве. в уроке 10, когда мы добавляли новые записи в бд shop, мы использовали стандартный запрос на добавление вида: insert into customers (name, email) value ('иванов сергей', 'sergo@mai...

This file contains 7 pages in DOCX format (232.1 KB). To download "sql - урок 15. хранимые процедуры. часть 1.", click the Telegram button on the left.

Tags: sql - урок 15. хранимые процеду… DOCX 7 pages Free download Telegram