Добавлена ​​новая запись курсора TSQL - PullRequest
4 голосов
/ 27 января 2012

Я написал курсор:

DECLARE CURSOR_SendMail CURSOR FAST_FORWARD  
FOR  
SELECT AlertId,AlertDetailsId,AlertDescription  
,AlertTarget,ProjectDetailId,Subject  
FROM    tblAlert   
WHERE AlertId > @MaxAlertID

Здесь @MaxAlertID - это некоторый идентификатор, так что записи выше этого идентификатора будут отправлены по почте.

Я хочу спросить:

При извлечении записей по одной и их отправке по почте будут ли учитываться все новые записи, вставленные в таблицу tblAlert, или только те записи, которые были доступны при объявлении курсора.

например.

Во время объявления максимального идентификатора курсора в таблице 1000 и @MaxAlertID равно 0.

Поэтому, когда я начинаю отправлять почту для каждой записи от 1 и выше, и достигаю некоторой записи 517, и к tblAlert добавляются несколько записей со 1001 и 1002, так что эти 1001,1002 будут считаться или только до 1000 будет считаться.

Ответы [ 3 ]

4 голосов
/ 27 января 2012

Посмотрите документацию для DECLARE CURSOR. Существуют параметры, которые вы можете указать, чтобы получить поведение , которое вы хотите - о котором вы нам не сказали.

Если вы не хотите рассмотреть новые записи, рассмотрите возможность указания STATIC или KEYSET. Если вы делаете хотите рассмотреть новые записи, укажите DYNAMIC.

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

1 голос
/ 18 июня 2013

По умолчанию установлено значение Динамическое, если вы не изменили его.

0 голосов
/ 27 января 2012

Цитировать из документации :

DYNAMIC

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

Поэтому добавление DYNAMIC к определению курсора даст вам то, что вы хотите.Или тебе нужно наоборот?Затем сделайте курсор STATIC

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...