
- •16. Язык sql (Structured Query Language). Интерактивный и встроенный sql. Составные части sql. Типы данных sql. Основные типы команд sql
- •17. Основные отличия sql от процедурных языков программирования. Встроенные функции
- •18. Язык sql. Команды манипулирования данными
- •19. Архитектуры приложений. Основные различия между архитектурами приложений.
- •21. Понятие подзапроса. Примеры формирования связанных и вложенных подзапросов.
- •22. Понятие хранимой процедуры. Особенности и синтаксис построения хранимых процедур на языке TransactSql.
- •23. Определение пользовательской функции. Основное отличие пользовательских функций от хранимых процедур. Основное отличие скалярной пользовательской функции от табличной.
- •24.Понятие триггера. Особенности и синтаксис построения триггера на языке TransactSql.
- •25.Современные направления исследований и разработок в области баз данных. Системы управления базами данных следующего поколения.
- •26.Реализация системы защиты данных в субд.
- •27.Информационные приложения, основанные на использовании "складов данных" (DataWarehousing). Oltp и olap приложения. Описание типа хранилища данных под названием «снежинка», «звезда».
- •28.Объектно-реляционные субд. Подходы к построению объектно-реляционных субд (орсубд). К лассификация субд
- •29.Объектно-ориентированные субд. Особенности построения моделей суобд.
22. Понятие хранимой процедуры. Особенности и синтаксис построения хранимых процедур на языке TransactSql.
Храни́мая процеду́ра — объект базы данных, представляющий собой набор SQL-инструкций, который компилируется один раз и хранится на сервере. Хранимые процедуры очень похожи на обыкновенные процедуры языков высокого уровня, у них могут быть входные и выходные параметры и локальные переменные, в них могут производиться числовые вычисления и операции над символьными данными, результаты которых могут присваиваться переменным и параметрам. В хранимых процедурах могут выполняться стандартные операции с базами данных (как DDL, так и DML). Кроме того, в хранимых процедурах возможны циклы и ветвления, то есть в них могут использоваться инструкции управления процессом исполнения.
Хранимые процедуры похожи на определяемые пользователем функции (UDF). Основное различие заключается в том, что пользовательские функции можно использовать как и любое другое выражение в SQL запросе, в то время как хранимые процедуры должны быть вызваны с помощью функции CALL:
СALL процедура(…) или EXECUTE процедура(…)
Хранимые процедуры могут быть активизированы не только пользовательскими приложениями, но и триггерами.
Хранимые процедуры являются объектами БД.
Каждая хранимая процедура компилируется при первом выполнении, в процессе компиляции строится оптимальный план выполнения процедуры. Описание процедуры совместно с планом ее выполнения хранится в системных таблицах БД.
Для создания хранимой процедуры применяется оператор SQL:
CREATE PROCEDURE
В коммерческих СУБД для написания текстов хранимых процедур используются собственные языки программирования: в СУБД MS SQL Server и System фирмы Sybase используется язык Transact SQL.
В MS SQL Server хранимая процедура создается оператором:
CREATE PROCEDURE ]
<имя_процедуры> [;<версия>]
[{@параметр1тип_данных} [VARYING]
[= <значение_по_умолчанию>] [OUTPUT]] [, .параметрN…]
[ WITH { RECOMPILE
ENCRYPTION
RECOMPILE, ENCRYPTION}]
[FORREPLICATION] AS Тело процедуры
Ключевое слово:
VARYING определяет заданное значение по умолчанию для определенного ранее параметра.
RECOMPILE определяет режим компиляции создаваемой хранимой процедуры.
ENCRYPTION определяет режим, при котором исходный текст хранимой процедуры не сохраняется в БД.
Однако кроме имени хранимой процедуры все остальные параметры являются необязательными.
Процедуры могут быть процедурами или процедурами-функциями.
Хранимая процедура-функция возвращает значение, которое присваивается переменной, определяющей имя процедуры.
Процедура в явном виде не возвращает значение, но в ней может быть использовано ключевое слово OUTPUT, которое определяет, что данный параметр является выходным.
Важно! Все входные и выходные параметры должны быть заданы обязательно и в том порядке, в котором они определены в процедуре.
Если определено несколько версий хранимой процедуры, то при вызове необходимо указать номер конкретной версии для исполнения.
Например, в версии 2 процедуры COUNT_EX последний оператор исполнения этой процедуры имеет вид:
EXEC @Ntek = COUNT_EX; 2 @ISBN
Однако если в процедуре определены значения входных параметров по умолчанию, то при запуске процедуры могут быть указаны значения не всех параметров.