Определение функции пользователя




Прежде чем создать UDF инструкцией CREATE FUNCTION, необходимо определить следующие характеристики:

- имя UDF,

- схема (квалификатор),

- число и типы данных входных параметров,

- типы возвращаемых значений.

Для изменения функции используется инструкция ALTER FUNCTION, для удаления – DROP FUNCTION.

Нельзя использовать оператор ALTER FUNCTION для преобразования типов функций.

Типы операторов, которые могут использоваться в функции:

  • Оператор DECLARE.
  • Присвоение значений объектам, локальным относительно функции, с помощью опции SET или SELECT.
  • Операторы управления (например, IF..ELSE, WHILE, RETURN, GOTO, BREAK и CONTINUE).
  • Оператор SELECT, содержащий список выбора с выражениями, которые присваивают значения локальным переменным функции.
  • Операторы UPDATE, INSERT и DELETE.
  • Операторы EXECUTE, для вызова хранимых процедур.

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

Понятие курсора

Курсор в SQL – это область в памяти БД, которая предназначена для хранения результата оператора выборки SQL. Указанная область в памяти поименована и доступна для прикладных программ.

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

В соответствии со стандартом SQL при работе с курсорами можно выделить следующие основные действия:

· создание или объявление курсора;

· открытие курсора, т.е. наполнение его данными, которые сохраняются в памяти;

· выборка из курсора и изменение с его помощью строк данных;

· закрытие курсора, после чего он становится недоступным для пользовательских программ;

· освобождение курсора, т.е. удаление курсора как объекта, поскольку его закрытие необязательно освобождает ассоциированную с ним память.

Недостатки:

- не позволяют проводить операции изменения над всем объемом данных;

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

Таким образом, при манипулировании данными следует избегать работы с курсорами и использовать командами обработки данных: UPDATE, INSERT, DELETE.

Курсоры делятся на две категории: последовательные и прокручиваемые. Последовательные позволяют выбирать данные только в одном направлении – от начала к концу. Прокручиваемые же курсоры предоставляют большую свободу действий – допускается перемещение в обоих направлениях и переход к произвольной строке результирующего набора курсора.

SQL Server поддерживает курсоры статические, динамические, быстрые последовательные и управляемые набором ключей (ключевые курсоры).

9.

Понятие транзакции

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

Транзакция обладает четырьмя важными свойствами, известными как свойства АСИД:

  • (А) Атомарность. Транзакция выполняется как одна операция - либо выполняется вся транзакция целиком, либо она целиком не выполняется.
  • (С) Согласованность. Транзакция переводит базу данных из одного согласованного (целостного) состояния в другое согласованное (целостное) состояние. Внутри транзакции согласованность базы данных может нарушаться.
  • (И) Изоляция. Транзакции разных пользователей не должны мешать друг другу (например, как если бы они выполнялись строго по очереди).
  • (Д) Долговечность (устойчивость). Если транзакция выполнена, то результаты ее работы должны сохраниться в базе данных, даже если в следующий момент произойдет сбой системы.

Транзакция обычно начинается автоматически с момента выполнения запроса и продолжается до тех пор, пока не произойдет одно из следующих событий:

  • Подана команда COMMIT (зафиксировать транзакцию).
  • Подана команда ROLLBACK TRANSACTION (откатить транзакцию).
  • Произошло отсоединение пользователя от СУБД.
  • Произошел сбой системы.

Одним из способов поддержки транзакций является ведение журнала. Журнал транзакций — это структура данных, в которой хранятся записи о планирующихся и выполненных операциях. Работа с ним состоит из трёх шагов:

1. Записать намерение произвести некоторые операции

2. Запись о выполнении задания

3. Записать об отсутствии ошибок

Вложенные транзакции

Свойство Д (долговечность) также не является абсолютными свойством, т.к. некоторые системы допускают вложенные транзакции. Если транзакция Б запущена внутри транзакции А, и для транзакции Б выполнена команда COMMIT, то фиксация данных транзакции Б является условной, т.к. внешняя транзакция А может откатиться. Результаты работы внутренней транзакции Б будут окончательно зафиксированы только если будет зафиксирована внешняя транзакция А.

Вложенными называются транзакции, выполнение которых инициируется из тела уже активной транзакции.

Для создания вложенной транзакции не нужны какие-либо дополнительные команды. Новая транзакция начинается с открытой предыдущей. Завершение транзакции верхнего уровня откладывается до завершения вложенных транзакций. Если транзакция самого нижнего (вложенного) уровня завершена неудачно и отменена, то все транзакции верхнего уровня, включая транзакцию первого уровня, будут отменены.



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-02-16 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: