Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 @@RowCount  [new]
MaxiMaxiM
Member

Откуда:
Сообщений: 111
Есть процедура, в ней сначала происходит INSERT в таблицу, а затем UPDATE этой же таблице. После запуска процедуры INSERT, отрабатывает но @@RowCount = 0, UPDATE тоже отрабатывает, но @@RowCount = 0.

Почему так происходит?
11 апр 13, 15:31    [14167751]     Ответить | Цитировать Сообщить модератору
 Re: @@RowCount  [new]
Glory
Member

Откуда:
Сообщений: 104751
MaxiMaxiM
Почему так происходит?

Потому что вы неправильно проверяете @@RowCount
11 апр 13, 15:32    [14167764]     Ответить | Цитировать Сообщить модератору
 Re: @@RowCount  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
MaxiMaxiM,

небось у вас перед @@rowcount еще какой нить оператор есть :)
11 апр 13, 15:32    [14167766]     Ответить | Цитировать Сообщить модератору
 Re: @@RowCount  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
После INSERTа и UPDATEа и впрямь может быть @@ROWCOUNT=0 :))
Если ни одной записи не вставилось/не проапдейтилось
11 апр 13, 15:36    [14167802]     Ответить | Цитировать Сообщить модератору
 Re: @@RowCount  [new]
MaxiMaxiM
Member

Откуда:
Сообщений: 111
Maxx,
...
UPDATE	TableName
	SET	 Pole1	= A.Pole1
		,Pole2	= Getdate()
		,@Type	= A.[Type]
FROM	    TableNameF	R
	JOIN TableNameL	A ON A.ID = R.ID
WHERE	    R.ID = 5555
print 'after update '
print @@RowCount
	IF (@@RowCount != 1)
		RAISERROR('такой тип  "%s" не найден',18,1,@Type)
print 'before alternative'
	IF (@Type = 1) BEGIN
EXEC ProcedureName
...
11 апр 13, 15:38    [14167829]     Ответить | Цитировать Сообщить модератору
 Re: @@RowCount  [new]
MaxiMaxiM
Member

Откуда:
Сообщений: 111
iap,
в том то и дело, что 1 строка вставилась, а затем в этой строке прошел UPDATE
11 апр 13, 15:40    [14167843]     Ответить | Цитировать Сообщить модератору
 Re: @@RowCount  [new]
Glory
Member

Откуда:
Сообщений: 104751
MaxiMaxiM
print 'after update '
print @@RowCount

@@RowCount
Returns the number of rows affected by the last statement.
11 апр 13, 15:40    [14167846]     Ответить | Цитировать Сообщить модератору
 Re: @@RowCount  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
MaxiMaxiM,

11 апр 13, 15:40    [14167849]     Ответить | Цитировать Сообщить модератору
 Re: @@RowCount  [new]
MaxiMaxiM
Member

Откуда:
Сообщений: 111
Glory,
эти 2 строчки
print 'after update '
print @@RowCount

я добавил после того как
сработало
IF (@@RowCount != 1)
		RAISERROR('такой тип  "%s" не найден',18,1,@Type)
11 апр 13, 15:44    [14167880]     Ответить | Цитировать Сообщить модератору
 Re: @@RowCount  [new]
Glory
Member

Откуда:
Сообщений: 104751
MaxiMaxiM
я добавил после того как
сработало

Вы прочитали цитату из хелпа ?
Вы понимаете, что такое "last statement" ?
11 апр 13, 15:45    [14167895]     Ответить | Цитировать Сообщить модератору
 Re: @@RowCount  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
MaxiMaxiM,

у Вас UPDATEится TableName, а во FROMе - TableNameF и TableNameL,
которые с TableName никак не связаны.

Поэтому меняются все записи TableName, а проверяли @@ROWCOUNT на точное равенство 1.
11 апр 13, 15:48    [14167936]     Ответить | Цитировать Сообщить модератору
 Re: @@RowCount  [new]
MaxiMaxiM
Member

Откуда:
Сообщений: 111
Все работает, спасибо
11 апр 13, 15:51    [14167956]     Ответить | Цитировать Сообщить модератору
 Re: @@RowCount  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
MaxiMaxiM
Все работает, спасибо
Что - всё?
11 апр 13, 15:56    [14168009]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить