Sql Scholl
Распечатать страницу
Перейти на главную Карта сайта Отправить сообщение

Работа с хранимыми процедурами

      Большинство операций SQL, которые мы до сих пор выполняли, просты в том смысле, что в них применяется только один оператор по отношению к одной или нескольким таблицам. Но не все операции столь просты — зачастую приходится использовать несколько операторов для выполнения сложной операции. Например, рассмотрим следующие сценарии.
      •     При обработке заказа бывает необходимо удостовериться в том, что соответствующие товары есть наскладе.
      •     Если товары есть на складе, они должны быть зарезервированы, чтобы их не продали кому-нибудь еще, а их количество, доступное другим покупателям, должно быть уменьшено соответственно изменившейся ситуации.
      •     Товары, отсутствующие на складе, должны быть заказаны, для этого нужно связаться с их поставщиком.
      •     Клиенту необходимо сообщить, какие товары есть на складе (и могут быть отгружены немедленно) и заказ на какие товары выполнен быть не может.

       Очевидно, это не полный список примеров, но суть должна быть вам ясна. Решение подобной задачи потребует применения многих операторов SQL по отношению ко многим таблицам. Помимо того что сами SQL-операторы, подлежащие выполнению в подобных случаях, и их порядок не постоянны, они могут (и будут) изменяться в зависимости от того, какие товары имеются на складе, а каких там нет.

       Как бы вы написали этот код? Можно было бы написать каждый из операторов SQL отдельно и выполнить другие операторы в зависимости от полученных результатов. Вам пришлось бы делать это каждый раз, когда возникала бы необходимость подобной обработки данных (и для каждого приложения, которое в ней нуждается).

      Вы могли бы также создать хранимую процедуру. Хранимая процедура — это совокупность нескольких операторов (или даже один оператор), сохраненная для последующего использования. Ее можно рассматривать как командный файл, хотя на самом деле это нечто большее.

Access и MySQL

Хранимые процедуры не поддерживаются в Access. Кроме того, СУБД MySQL v4.x также не поддерживала хранимые процедуры (их поддержку планировалось осуществить в версии MySQL 5).

Гораздо больше информации

Хранимые процедуры — тема довольно сложная, полностью ее рассмотреть можно только в отдельной книге. Этот урок не научит вас всему, что необходимо знать о хранимых процедурах. Скорее это введение в данную тему, призванное познакомить вас с тем, что собой представляют хранимые процедуры и что с их помощью можно делать. По существу, представленные здесь примеры соответствуют только синтаксису Oracle и SQL Server.