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

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

Выполнение хранимых процедур

      Хранимые процедуры выполняются намного чаще, чем пишутся, поэтому мы начнем именно с их выполнения. Оператор SQL для выполнения хранимой процедуры — EXECUTE — принимает имя хранимой процедуры и некоторые параметры, необходимые для перехода к ней. Посмотрите на этот пример:

EXECUTE AddNewProduct ('JTSOl' ,
'Stuffed Eiffel Tower',
6.49,
'Plush stuffed toy with the text La Tour Eiffel in red white and blue1';

     Здесь выполняется хранимая процедура по имени AddNewProduct; она добавляет новый продукт в таблицу Products. Хранимая процедура AddNewProduct принимает четыре параметра: идентификатор поставщика (первичный ключ таблицы Vendors), название продукта, цена и описание. Эти четыре параметра соответствуют четырем ожидаемым переменным хранимой процедуры (определенным как часть самой хранимой процедуры). Данная хранимая процедура добавляет новую строку в таблицу Products и распределяет эти передаваемые атрибуты по соответствующим столбцам.
В таблице Products есть еще один столбец, нуждающийся в присвоении значения: столбец prod_id, который является первичным ключом таблицы. Почему это значение не передается в хранимую процедуру в виде атрибута? Для того чтобы идентификаторы генерировались правильно, безопаснее сделать этот процесс автоматизированным (и не полагаться на конечного пользователя). Именно поэтому хранимая процедура используется в этом примере, она выполняет следующие действия.

     •      Подтверждает правильность передаваемых данных, обеспечивая наличие значений у всех четырех параметров.
     •     Генерирует уникальный идентификатор, который будет использован в качестве первичного ключа.
     •     Добавляет   данные   о   новом   продукте   в   таблицу Products, сохраняя созданный первичный ключ и передавая данные в соответствующие столбцы.

Такова основная форма выполнения хранимой процедуры. В зависимости от СУБД могут быть использованы другие опции выполнения, включая следующие.

     •     
Опциональные параметры со значениями по умолчанию, присваиваемыми в случае, если параметр не предложен пользователем.
     •     Нестандартные параметры, указываемые в виде пар параметр= значение.
     •     Выходные параметры, позволяющие хранимой процедуре обновлять параметр для использования его в выполняемом приложении.
     •     Значение даты, выбираемое оператором SELECT.
     •     Возвращаемые коды, позволяющие хранимой процедуре возвращать значение в выполняемое приложение.