LinkThực thi nếu @@ rowcount> 0 đặt lại @@ rowcount thành 0. Tại sao?
@@ ROWCOUNT được sử dụng để thông báo cho số hàng bị ảnh hưởng cho người cuối cùng chọn, chèn, cập nhật hoặc xóa báo cáo
declare @row int select 100 if @@rowcount>0 set @[email protected]@rowcount ...
trên sẽ trở về 0 vì càng sớm càng
if @@rowcount>0
được thực hiện nó được đặt lại thành 0 vì nó không trả về bất kỳ hàng nào. Vì vậy, luôn luôn gán cho biến đầu tiên
Tại sao tuyên bố if @@rowcount>0
đặt lại @@rowcount
để 0? Giá trị của @@rowcount
chỉ bị ảnh hưởng bởi việc chọn, chèn, cập nhật và xóa câu lệnh?
cảm ơn bạn
1 - Theo như tôi hiểu, lý do tại sao @@ rowcount trả lại 1 và không phải 0 là do truy vấn "SELECT @row, @@ rowcount" ảnh hưởng đến một hàng. Nhưng tôi nghĩ thuật ngữ "số hàng bị ảnh hưởng" được sử dụng khi câu lệnh sql xử lý các hàng thực tế trong bảng DB, nhưng câu lệnh chọn của bạn không truy cập bất kỳ hàng nào, vậy tại sao @@ rowcount return 1? – user702769
2 - Hy vọng câu hỏi này làm cho một số ý nghĩa - nếu chúng tôi đã nitpick, không @@ rowcount trả về số hàng ALREADY bị ảnh hưởng bởi tuyên bố chọn? Nếu vậy, sau đó "SELECT @row, @@ rowcount" phải trả về 0 cho @@ rowcount, vì câu lệnh select chưa được hoàn thành đầy đủ vào thời điểm nó lấy một giá trị từ @@ rowcount, và như vậy không có hàng nào bị ảnh hưởng chưa?! – user702769
@ user702769: @@ rowcount trong 'SELECT @row, @@ rowcount' bị ảnh hưởng bởi' set @row = @@ rowcount; 'phía trên nó. Một SELECT không thể đọc được @@ rowcount – gbn