Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

@@ROWCOUNT – Dapatkan Jumlah Baris yang Dipengaruhi oleh Pernyataan Terakhir di SQL Server

Di SQL Server, Anda dapat menggunakan @@ROWCOUNT fungsi sistem untuk mengembalikan jumlah baris yang dipengaruhi oleh pernyataan T-SQL terakhir.

Misalnya, jika kueri mengembalikan 4 baris, @@ROWCOUNT akan kembali 4.

Contoh 1 – Memilih Data

Berikut adalah contoh dasar untuk mendemonstrasikan cara kerjanya.

SELECT * FROM Dogs;
SELECT @@ROWCOUNT;

Hasil:

+---------+-----------+-----------+
| DogId   | DogName   | GoodDog   |
|---------+-----------+-----------|
| 1       | Fetch     | 0         |
| 2       | Fluffy    | 0         |
| 3       | Wag       | 0         |
+---------+-----------+-----------+
(3 rows affected)
+--------------------+
| (No column name)   |
|--------------------|
| 3                  |
+--------------------+
(1 row affected)

Dalam hal ini, SELECT . saya pernyataan mengembalikan 3 baris, jadi @@ROWCOUNT dikembalikan 3.

Contoh 2 – Memperbarui Data

Berikut ini contoh penggunaan @@ROWCOUNT dengan UPDATE pernyataan untuk menguji apakah ada baris yang diperbarui atau tidak.

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

Hasil:

(0 rows affected)
A dog outside the system cannot be a good dog

Dalam hal ini, tidak ada baris yang diperbarui karena DogId tidak ada di tabel. Kami dapat menggunakan @@ROWCOUNT dengan IF pernyataan untuk mengembalikan pesan yang sesuai kepada pengguna.

Ini dia lagi, tapi kali ini anjingnya memang ada.

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

Hasil:

(1 row affected)
Your dog will be rewarded accordingly

Set Data Sangat Besar?

Jika menurut Anda jumlah baris yang terpengaruh oleh pernyataan akan lebih dari 2 miliar, gunakan ROWCOUNT_BIG() sebagai gantinya.

Anda dapat menggunakannya dengan cara yang sama seperti @@ROWCOUNT digunakan.

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

Hasil:

(0 rows affected)
A dog outside the system cannot be a good dog

Kapan @@ROWCOUNT adalah Setel Ulang

Pernyataan seperti USE , SET <option> , DEALLOCATE CURSOR , CLOSE CURSOR , PRINT , RAISERROR , BEGIN TRANSACTION , atau COMMIT TRANSACTION setel ulang @@ROWCOUNT nilai ke 0 .

Menjalankan SELECT @@ROWCOUNT dengan sendirinya juga akan mengembalikan 0 .


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kebiasaan Buruk:Menghindari NULL di SQL Server

  2. Konversi 'waktu' menjadi 'datetimeoffset' di SQL Server (Contoh T-SQL)

  3. Gunakan SET TEXTSIZE untuk Membatasi Data yang Dikembalikan untuk Setiap Baris di SQL Server

  4. Apakah ada cara untuk mengakses nilai baris sebelumnya dalam pernyataan SELECT?

  5. Akankah GETUTCDATE() mengembalikan nilai yang sama jika digunakan dua kali dalam pernyataan yang sama?