получение количества записей, обновленных или вставленных в хранимую процедуру sql server - PullRequest
3 голосов
/ 10 ноября 2011

У меня есть SP, который вставляет некоторые записи, обновляет другие и удаляет некоторые. То, что я хочу, это вернуть значения счетчика того, что было вставлено и что было обновлено и что было удалено. Я думал, что смогу использовать @@ ROWCOUNT, но это всегда дает мне 1.

После моей ВСТАВКИ я запускаю:

PRINT @@ROWCOUNT

Но моя консоль сообщений показывает, что на самом деле произошло, и этот номер:

(36 row(s) affected)
1

Итак, я вижу, что 36 записей были фактически обновлены, но @@ ROWCOUNT вернул 1.

Я пытаюсь сделать то же самое после того, как части SP UPDATE и DELETE запускаются с одинаковым результатом.

Ответы [ 2 ]

8 голосов
/ 10 ноября 2011

@@ROWCOUNT покажет количество строк, затронутых самым последним оператором - если у вас есть какие-либо операторы между INSERT и PRINT, то это даст вам неправильный номер.

МожетВы показываете нам немного больше кода, чтобы мы могли видеть порядок выполнения?

1 голос
/ 10 ноября 2011

В зависимости от того, как ответ @ ninesided работает для вас, вы также можете использовать условие output при каждом обновлении / вставке / удалении и получать отсюда отсчеты.

Пример:

declare @count table
(
    id int
)

update mytable
set oldVal = newVal
output inserted.field1 into @count

select count(*) from @count

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

...