В каком порядке мне следует звонить @@ ROWCOUNT / @@ ERROR - PullRequest
2 голосов
/ 25 августа 2011

Я вставляю число или строки в таблицу, используя INSERT с SELECT. После транзакции я хочу сохранить значения @@ ROWCOUNT и @@ ERROR в объявленных переменных locallay.

INSERT SubscriberList (PublicationId, SubscriberId)
SELECT @PublicationId, S.SubscriberId
FROM Subscribers S

SET @NoRows = @@ROWCOUNT
SET @ErrorCode = @@ERROR

Я не был уверен, действительно ли это так, если я позвоню одному, я откажусь от другого?

Ответы [ 2 ]

8 голосов
/ 25 августа 2011

Установите их обоих сразу:

SELECT @NoRows = @@ROWCOUNT, @ErrorCode = @@ERROR

4 голосов
/ 25 августа 2011

В дополнение к ответу @ JNK ...

Я никогда не использую @@ ERROR сейчас из-за TRY / CATCH

BEGIN TRY

    BEGIN TRAN

    INSERT SubscriberList (PublicationId, SubscriberId)
    SELECT @PublicationId, S.SubscriberId
    FROM Subscribers S

    SET @NoRows = @@ROWCOUNT

    ... do more inserts, updates etc

    COMMIT TRAN

END TRY
BEGIN CATCH
    ROLLBACK TRAN
    SET @ErrorCode = ERROR_NUMBER()
    RAISERROR  ...
END CATCH
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...