SQL Serverでは、@@ROWCOUNT
を使用できます。 最後のT-SQLステートメントの影響を受けた行数を返すシステム関数。
たとえば、クエリが4行を返す場合、@@ROWCOUNT
4を返します。
例1-データの選択
これがどのように機能するかを示す基本的な例です。
SELECT * FROM Dogs;
SELECT @@ROWCOUNT;
結果:
+---------+-----------+-----------+ | DogId | DogName | GoodDog | |---------+-----------+-----------| | 1 | Fetch | 0 | | 2 | Fluffy | 0 | | 3 | Wag | 0 | +---------+-----------+-----------+ (3 rows affected) +--------------------+ | (No column name) | |--------------------| | 3 | +--------------------+ (1 row affected)
この場合、私のSELECT
ステートメントは3行を返したため、@@ROWCOUNT
3を返しました。
例2–データの更新
@@ROWCOUNT
の使用例を次に示します。 UPDATE
を使用 行が更新されたかどうかをテストするステートメント。
UPDATE Dogs
SET GoodDog = 1
WHERE DogId = 4
IF @@ROWCOUNT > 0
PRINT 'Your dog will be rewarded accordingly';
ELSE
PRINT 'A dog outside the system cannot be a good dog'
GO
結果:
(0 rows affected) A dog outside the system cannot be a good dog
この場合、DogIdがテーブルに存在しなかったため、行は更新されませんでした。 @@ROWCOUNT
を使用できました IF
を使用 適切なメッセージをユーザーに返すステートメント。
ここに再びありますが、今回は犬が存在します。
UPDATE Dogs
SET GoodDog = 1
WHERE DogId = 1
IF @@ROWCOUNT > 0
PRINT 'Your dog will be rewarded accordingly';
ELSE
PRINT 'A dog outside the system cannot be a good dog'
GO
結果:
(1 row affected) Your dog will be rewarded accordingly
非常に大きなデータセット?
ステートメントの影響を受ける行数が20億を超えると思われる場合は、ROWCOUNT_BIG()
を使用してください。 代わりに。
@@ROWCOUNT
と同じように使用できます 使用されます。
UPDATE Dogs
SET GoodDog = 1
WHERE DogId = 4
IF ROWCOUNT_BIG() > 0
PRINT 'Your dog will be rewarded accordingly';
ELSE
PRINT 'A dog outside the system cannot be a good dog'
GO
結果:
(0 rows affected) A dog outside the system cannot be a good dog
@@ROWCOUNT
の場合 リセットです
USE
などのステートメント 、SET <option>
、DEALLOCATE CURSOR
、CLOSE CURSOR
、PRINT
、RAISERROR
、BEGIN TRANSACTION
、またはCOMMIT TRANSACTION
@@ROWCOUNT
をリセットします 0
への値 。
S ELECT @@ROWCOUNT
を実行しています 単独でも0
を返します 。