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を返します 。