ТОР 5 статей: Методические подходы к анализу финансового состояния предприятия Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века Характеристика шлифовальных кругов и ее маркировка Служебные части речи. Предлог. Союз. Частицы КАТЕГОРИИ:
|
rowset_function_limited} SET { column_name = { expression | DEFAULT | NULL } | @variable = expression I @variable = column = expression } [,...n ] { { [ FROM { <table_source> } [....n ] ] WHERE CURRENT OF { { [ GLOBAL ] cursor_name } | cursor_variable_name } ] } [ OPTION (<query_hint> [....n ]) ] Принципиальное отличие между стандартным синтаксисом команды UPDATE и синтаксисом обновления данных с помощью курсора состоит в методе использования раздела WHERE. Если при стандартном обновлении данных раздел WHERE содержит логическое выражение, необходимое для принятия решения о том, будет обновляться строка таблицы или нет, то при работе с курсорами раздел WHERE содержит параметр CURRENT OF, после которого указывается имя курсора. Упрощенно синтаксис команды UPDATE, предназначенной для обновления таблиц посредством курсора, можно записать следующим образом: UPDATE table_name SET {column_name = {DEFAULT | NULL | expression}} [,...n] WHERE CURRENT OF cursor_name Имя таблицы, в которой будет выполняться изменение, указывается с помощью аргумента table_name. Отметим, что это должна быть та же таблица, на которую ссылается запрос SELECT. За одну операцию может быть изменено несколько столбцов таблицы. Однако если при создании курсора было наложено ограничение на список изменяемых строк, то разрешается указывать только те столбцы, которые идентифицируются параметром FOR UPDATE OF команды DECLARE CURSOR. Имя столбца, значение в котором необходимо изменить, задается с помощью аргумента column_name. Столбцу можно присвоить значение по умолчанию, указав ключевое слово DEFAULT. Для присвоения столбцу значения NULL требуется ключевое слово NULL. Для присвоения столбцу произвольного значения необходимо указать после знака = соответствующее выражение. Аргумент cursor_name определяет имя курсора, который будет определять изменяемую строку. В принципе для изменения одной и той же таблицы можно использовать разные курсоры. Таким образом, если ваш курсор модифицируемый, т.е. описан как FOR UPDATE, изменение исходных значений во множестве курсора выполняется достаточно просто. Модификация через курсор осуществляется через фразу WHERE. Это называется позиционное обновление: UPDATE таблица_или_представление SET список_для_модификации WHERE CURRENT OF курсор_или_переменная Transact-SQL также поддерживает позиционное удаление, которое имеет следующую форму записи: DELETE таблица_или_представление WHERE CURRENT OF курсор_или_переменная
Мониторинг курсоров Transact-SQL
В Transact-SQL существует две глобальные переменные и функция, которые помогают контролировать работу и состояние вашего курсора. Переменная @@CURSOR_ROWS возвращает количество строк во множестве последнего курсора. Переменная @@FETCH_STATUS возвращает информацию о выполнении последней команды FETCH. Функция CURSOR_STATUS (тип, курсор или переменная) возвращает значение о состоянии курсора. Более подробную информацию см. в документации по SQL Server.
Не нашли, что искали? Воспользуйтесь поиском:
|