CREATE VIEW имя_представления
[(столбец[,столбец] ...)]
AS подзапрос
[WITH CHECK OPTION]
"WITH CHECK OPTION" (с проверкой) указывает, что для операций
INSERT и UPDATE над этим представлением должна осуществляться проверка,
обеспечивающая удовлетворение WHERE фразы подзапроса;
список имен столбцов должен быть обязательно определен лишь в тех случаях, когда:
а) хотя бы один из столбцов подзапроса не имеет имени (создается с помощью выражения,
SQL-функции или константы);
б) два или более столбцов подзапроса имеют одно и то же имя;
если же список отсутствует, то представление наследует имена столбцов из подзапроса.
CREATE VIEW отдел_200
AS
SELECT ot,tn,f,ok FROM bd WHERE ot=200
Выборка из представленй:
SELECT * FROM отдел_200
КУРСОР
Доступ к строке осуществляется по ее номеру
Виды курсоров:
Курсоры Transact-SQL. Создаются на сервере и работают в транзакциях,
Процедурах и триггерах
Курсоры API сервера. Используются при доступах к данным через ODBC, OLE и
Др. Данные набора хранятся на сервере.
3 КУРСОРЫ КЛИЕНТА – создается на клиенте. Клиент получает набор данных и сам организует доступ к данным. Позволяет увеличить производительность за счет уменьшения обращений к серверу. Содержимое курсора определяется командой SELECT, что позволяет использовать в курсоре несколько таблиц. Допускается использовать функции, переменные, выражения. Курсоры работают с одной строкой, но есть и блочные (один оператор обрабатывает несколько строк). Однако блочные курсоры создаются средствами ODBC, ADO и др. и средствами Transact-SQL не поддерживаются. По способу обращения подразделяются:
ПОСЛЕДОВАТЕЛЬНЫЕ (последовательное считывание строк) После выполнения команды сервер перемещает указатель на следующую строку. Нельзя обратиться к предыдущей строке или через N строк. Работают быстрее прокручиваемых курсоров.
ПРОКРУЧИВАЕМЫЕ (позволяет обращаться к произвольной строке)
Допускается прямой и обратный скроллинг (прокручивание).
В Transact-SQL поддерживаются 4 типа курсоров:
- СТАТИЧЕСКИЕ КУРСОРЫ (курсры моментального снимка). Статические данные помещаются в базу Tempdb и там же используются. Открываются только в режиме чтения.
- КЛЮЧЕВЫЕ КУРСОРЫ В набор включает не всю строку, а только ключевые поля. При обращении к строке курсора сервер выбирает данные по идентификатору непосредственно из таблицы.
- ПОСЛЕДОВАТЕЛЬНЫЕ КУРСОРЫ – поддерживают только обращение к следующей строке.
- ДИНАМИЧЕСКИЕ КУРСОРЫ – позволяют обращаться к любой строке курсора. В отличии от ключевых курсоров сервер при обращении к строке вновь обрабатывает SELECT, тем самым обновляя набор. Можно изменять данные.
Создание курсора
DECLAREимя_курсора CURSOR
[видимость]………………………………. LOCAL или GLOBAL
[прокрутка]………………………………..FORWARD_ONLY или SCROLL
[тип]……………………………………….STATIC, KEYSET, DYNAMIC,
FAST_FORWARD
[блокировка]………………………………READ_ONLY, SCROLL_LOCKS,
OPTIMISTIC
[TIPE_WARNING]………………………Отправляется сообщение клиенту, если тип
Курсора преобразуется в другой. Это в случае
Если объявленный курсор не поддерживает
Заданный оператор SELECT
FOR оператор_выборки……………… он задает строки, которые будут включены во
Множество курсора.
[FOR UPDATE [OF имена_столбцов]]..перечислены имена столбцов, для которых
Разрешена модификация. Если опустить
скобку [OF…..], то разрешена модификация всех столбцов.
LOCAL – локальный курсор
GLOBAL – глобальный курсор
FORWARD_ONLY – перемещение от начала к концу
SCROLL – перемещение в любом направлении
STATIC – статический курсор делает быстрый снимок данных (из SELECT) и
Хранит в tempdb. Могут быть объявлены как последовательные или как
Прокручиваемые
KEYSET- ключевой курсор копирует в tempdb столбцы, которые уникально
Идентифицируют каждую строку. Таблицы входящие в SELECT должны
Иметь уникальный индекс.
DYNAMIC- динамический курсор отражает изменения данных. Столбцы