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- динамический курсор отражает изменения данных. Столбцы