Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Хранимые процедуры и функции




Хранимая процедура – это объект базы данных, набор откомпилированных команд - подпрограмма, работающая на сервере. Так как хранимая процедура проходит предварительную компиляцию и оптимизацию, она более эффективна, чем аналогичный набор команд, исполняемый с клиента. Хранимая процедура вызывается по имени, как программный модуль и может принимать параметры и возвращать результаты. В код хранимой процедуры может использоваться не только операции извлечения и модификации данных, но и логика ветвления, переменные и другие языковые инструкции, которые делают хранимые процедуры мощным средством реализации логики обработки.

Хранимые процедуры могут быть четырех типов: системные (System), локальные (Local), временные (Temporary), и удаленные (Remote). Эта классификация по области видимости. Системные процедуры хранятся в базе данных master и начинаются с префикса sp_. Для создания своей системной процедуры необходимо ее создать с именем sp_имя и поместить в master, тогда она будет видима и доступна любому серверу. Для изменения системной хранимой процедуры нужно сделать ее копию, сохранить оригинальную процедуру под другим именем. Локальные хранимые процедуры создаются в пользовательских базах данных. Если процедура создается с именем # или ##, то получаете временную хранимую процедуру, помещаемую в базу данных tempdb. Процедуры, начинающиеся с ## - глобальные, они видны любой сессии связи с данным сервером. Процедуры с одним # - локальные и видны только из соединения, в котором они созданы. Когда соединение, в котором создана процедура, закрыто, процедура автоматически уничтожается. Удаленные процедуры могут вызываться с иного, чем текущий сервер, с которым клиентское приложение установило соединение. При этом текущий сервер является промежуточным звеном. Есть еще один тип хранимых процедур – расширенные хранимые процедуры. Они принципиально отличаются от перечисленных. Это DLL, как правило написанные на С и называются хранимыми только потому, что имя хранится в базе данных SQL Server. Сами DLL хранятся как файлы в соответствующем каталоге ОС. Для создания хранимой процедуры используется команда:

CREATE PROC[EDURE] <имя процедуры> [;< число>]

[@ имя_параметра тип_данных [VARYING] [=<значение>] [OUTPUT] [, …]

[WITH {RECOMPILE | ENCRYPTION}]

[FOR REPLICATION]

AS <инструкции SQL>

Здесь: [; число] – задает номер версии вашей же программы с тем же именем,

@параметр – параметр, передаваемый или получаемый из процедуры. Процедура может иметь до 1024 параметров. Параметры могут принимать значения NULL. Параметр может относиться к любому типу данных, в том числе TEXT, IMAGE, CURSOR. Для параметра типа CURSOR ключевые слова VARYING и OUNPUT являются обязательными,

VARYING - означает, что параметр возвращает итоговый набор, используется только для типа данных CURSOR,

<Значение> – определяет значение параметра по умолчанию. Может быть любой константой или NULL,

OUNPUT – означает, что параметр является выходным, то есть может возвращаться стороне, вызвавшей процедуру. Параметры типа CURSOR обязаны быть выходными,

With RECOMPILE – процедуры будет повторно компилироваться при каждом выполнении.

FOR Replication – опция позволяет выполнить процедуру в процессе репликации.

Нельзя применять опцию WITH RECOMPILE в инструкции Create Procedure, содержащей опцию FOR Replication. Эту опцию применяют для создания процедуры, которая выполняется в режиме репликации.

Для шифрования определения хранимой процедуры, которая записывается в системную таблицу syscomment, в инструкции Create Procedure может быть добавлена опция ENCRYPTION (для запрещения просмотра пользователями информации об определении процедуры). Могут быть изменены только незашифрованные процедуры.

Ограничения: процедуры не могут содержать команд ALTER TABLE, CREATE INDEX, CREATE TABLE, DROP TABLE, DROP INDEX, TRANCATE TABLE, UPDATE STATSTICS.

После создания хранимой процедуры достаточно ввести ее имя в командной строке. Если вызов хранимой процедуры следует не в первой строке, а за выполнением других инструкций, для ее активизации необходимо применять команду

EXEC[UTE] [@код возврата] <имя процедуры> [;<число>]

[@список параметров] [WITH RECOMPILE]

Здесь код возврата – переменная для сохранения кода возврата процедуры,

номер – числовой идентификатор процедуры, при его отсутствии выполняется процедура с максимальным номером версии. Удаление хранимой процедуры:

Drop procedure <имя_хранимой процедуры>.

Процедуры могут встраиваться внутрь других процедур. Возможно до 16 уровней вложенности. Модификация хранимых процедур осуществляется командой:

ALTER PROC[EDURE] имя процедуры [; число]

[@ имя_параметра тип_данных [VARYING] [=значение] [OUTPUT] [, …]

[WITH {RECOMPILE | ENCRYPTION}]

[FOR REPLICATION]

AS ИНСТРУКЦИЯ_SQL

[ RETURN [код статуса]]

 




Поделиться с друзьями:


Дата добавления: 2014-10-15; Просмотров: 525; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.008 сек.