Профтемы студенту и преподавателю
Taketop.ru
СТУДЕНТУ И ПРЕПОДАВАТЕЛЮ
лекции по дисциплинам
Информатика и вычислительная техника :: Разработка и эксплуатация удаленных баз данных
Типы хранимых процедур
Типы хранимых процедур.
1) Системные хранимые процедуры (system stored procedures).
2) Пользовательские хранимые процедуры (user-defined stored procedures).
3) Временные (temporary stored procedures) и локальные временные хранимые процедуры (local temporary stored procedures). Такие процедуры существуют лишь некоторое время, после чего автоматически уничтожаются сервером.
в) Создание и удаление хранимой процедуры
Создание хранимой процедуры состоит из нескольких этапов:
1) Определение типа создаваемой хранимой процедуры. Необходимо решить, будет ли процедура временной или пользовательской.
2) Запланировать права доступа. При создании хранимой процедуры следует учитывать, что она будет иметь те же права доступа к объектам базы данных, что и создавший ее пользователь.
3) Определить параметры хранимой процедуры. Подобно процедурам, входящим в состав большинства языков программирования, хранимые процедуры могут иметь входные и выходные параметры.

Хранимая процедура создается следующим оператором:
CREATE PROCEDURE ИмяПроцедуры
[(<входной_параметр> <тип_данных>
[,<входной_параметр> <тип_данных>...])]
[RETURNS
(<выходной_параметр> <тип_данных>
[, (<выходной_параметр> <тип_данных>...])]
AS
[<объявление локальных переменных>]
BEGIN
<оператор>;
[<оператор>;...]
END
Входные параметры служат для передачи в процедуру значений из вызывающего приложения. Изменять значения входных параметров в теле процедуры бессмысленно: эти изменения будут забыты после окончания работы процедуры.
Выходные параметры служат для возвращения результирующих значений. Значения выходных параметров устанавливаются в теле процедуры, и после окончания её работы передаются в вызывающее приложение.
Как входные, так и выходные параметры могут быть опущены, если в них нет необходимости.

Алгоритмический язык процедур и триггеров
Хранимые процедуры и триггеры кодируются на специальном алгоритмическом языке, в основе которого лежит язык SQL, дополненный локальными переменными, условными, циклическими операторами, операторами присваивания и некоторыми другими средствами. Отдельные операторы могут располагаться на нескольких строках и отделяются друг от друга точкой с запятой. Регистр букв в операторах не имеет значения. В любом месте программы можно поставить комментарий, обрамленный парой символов /* и */. Символы каждой пары, а также символы операций сравнения >=, <=, <>, != (не равно), !< (не меньше), !> (не больше) не должны разрываться пробелами.

Локальные переменные
Локальные переменные служат для временного запоминания промежуточных результатов вычислений. Объявление переменной имеет такой формат:
DECLARE VARIABLE <имя_переменной тип>;
Операторные скобки
Операторные скобки BEGIN...END ограничивают тело процедуры (триггера) и с их помощью создается составной оператор. Допускается произвольная глубина вложенности операторных скобок.
Перед словом END нельзя опускать точку с запятой (;) -- символ-разделитель операторов.

Оператор SELECT
В отличие от SQL-оператора в процедурном операторе SELECT допускается использование следующей секции, с помощью которой можно указать локальные переменные и/или выходные параметры:
INTO :<переменная> [, : <переменная> . . ]
В выходные параметры оператор должен поместить единичные возвращаемые значения или значения столбцов для каждой записи, если возвращается множество записей. В списке после зарезервированного слова INTO именам переменных и выходных параметров должны предшествовать двоеточия.

Условный оператор
Условный оператор имеет формат:
IF (<условное_выражение>) THEN <оператор1> [ELSE <оператор2>]
В процедурном условном операторе условное выражение должно заключаться в круглые скобки. Условное выражение строится из знаков операций сравнения и логических операций AND, OR, NOT. Приоритет операций сравнения меньше, чем у логических операций, что избавляет от необходимости расстановки группирующих скобок:
IF (NSum>0 AND NType IN (0,6)) THEN...

Операторы FOR и SUSPEND
Оператор FOR предназначен для получения множества значений. Он имеет такой формат:
FOR SELECT<тело оператора SELECT> INTO <список переменных>
DO <оператор>
Для каждой записи, извлекаемой оператором SELECT, выполняется оператор <оператор>, которым часто бывает оператор SUSPEND.
Этот оператор приостанавливает работу процедуры до тех пор, пока вызывающая программа не потребует очередной порции данных. На основе операторов FOR и SUSPEND строятся процедуры, возвращающие наборы данных.

Оператор присваивания
Оператор присваивания служит для занесения выражения в переменную или выходной параметр:
<переменная>=<выражение>
Выражение и переменная должны быть совместимого типа. Перед знаком равенства двоеточие не ставится.

Операторы WHILE и EXIT
Оператор WHILE имеет формат
WHILE (<условие>) DO <оператор>
Оператор EXIT служит для принудительного завершения работы процедуры (в триггере нельзя использовать этот оператор):
IF (NType IN (2,3)) THEN EXIT;

Оператор EXECUTE PROCEDURE
С помощью оператора EXECUTE PROCEDURE процедура (триггер) может обратиться к другой хранимой процедуре (к триггеру нельзя обратиться). Формат оператора:
EXECUTE PROCEDURE <имя> [<параметр> [, <параметр>...]]
[RETURING_VALUES: <переменная> [,:<переменная>...]];
После имени вызываемой процедуры перечисляются входные параметры, если они есть, а после RETURING_VALUES -локальные переменные и/или выходные параметры, в которые вызываемая процедура должна поместить результат обращения. Именам переменных должны предшествовать двоеточия.

г) Хранимые процедуры в Visual Basic.Net
Для реализации хранимых процедур применяется объект Command. При выполнении хранимой процедуры необходимо присвоить свойству CommandType объекта Command значение StoredProcedure, а свойству CommandText - имя хранимой процедуры

Работы, представленные на сайте http://taketop.ru, предназначено исключительно для ознакомления. Все права в отношении работ и/или содержимого работ, представленных на сайте http://taketop.ru, принадлежат их законным правообладателям. Администрация сайта не несет ответственности за возможный вред и/или убытки, возникшие или полученные в связи с использованием работ и/или содержимого работ, представленных на сайте http://taketop.ru
Рейтинг@Mail.ru
Сайт управляется SiNG cms © 2010-2015