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

Bagaimana cara mendapatkan jumlah baris yang disisipkan oleh suatu transaksi

@@ROWCOUNT akan memberikan jumlah baris yang terpengaruh oleh terakhir Pernyataan SQL, yang terbaik adalah menangkapnya ke dalam variabel lokal mengikuti perintah yang dimaksud, karena nilainya akan berubah saat Anda melihatnya lagi:

DECLARE @Rows int
DECLARE @TestTable table (col1 int, col2 int)
INSERT INTO @TestTable (col1, col2) select 1,2 union select 3,4
SELECT @[email protected]@ROWCOUNT
SELECT @Rows AS Rows,@@ROWCOUNT AS [ROWCOUNT]

KELUARAN:

(2 row(s) affected)
Rows        ROWCOUNT
----------- -----------
2           1

(1 row(s) affected)

Anda mendapatkan Rows nilai 2, jumlah baris yang disisipkan, tetapi ROWCOUNT adalah 1 karena SELECT @[email protected]@ROWCOUNT perintah terpengaruh 1 baris

jika Anda memiliki beberapa INSERT atau UPDATE, dll. dalam transaksi Anda, Anda perlu menentukan bagaimana Anda ingin "menghitung" apa yang sedang terjadi. Anda dapat memiliki total terpisah untuk setiap tabel, satu nilai total keseluruhan, atau sesuatu yang sama sekali berbeda. Anda harus MENYATAKAN variabel untuk setiap total yang ingin Anda lacak dan tambahkan ke dalamnya setelah setiap operasi yang berlaku untuknya:

--note there is no error handling here, as this is a simple example
DECLARE @AppleTotal  int
DECLARE @PeachTotal  int

SELECT @AppleTotal=0,@PeachTotal=0

BEGIN TRANSACTION

INSERT INTO Apple (col1, col2) Select col1,col2 from xyz where ...
SET @[email protected][email protected]@ROWCOUNT

INSERT INTO Apple (col1, col2) Select col1,col2 from abc where ...
SET @[email protected][email protected]@ROWCOUNT

INSERT INTO Peach (col1, col2) Select col1,col2 from xyz where ...
SET @[email protected][email protected]@ROWCOUNT

INSERT INTO Peach (col1, col2) Select col1,col2 from abc where ...
SET @[email protected][email protected]@ROWCOUNT

COMMIT

SELECT @AppleTotal AS AppleTotal, @PeachTotal AS PeachTotal


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. cara mendapatkan nilai pengembalian dari prosedur sql server 2005 ke c #

  2. Keluar dari string di SQL Server sehingga aman digunakan dalam ekspresi LIKE

  3. Hirarki Teknologi Memori/Penyimpanan dan SQL Server

  4. SQL - Pilih catatan terbaru ketika ada duplikat

  5. R:[unixODBC][Driver Manager]Tidak dapat membuka lib 'SQL Server':file tidak ditemukan