Bất cứ khi nào bạn muốn thực hiện một câu lệnh SQL mà không phải trả lại một giá trị hoặc một tập hồ sơ, ExecuteNonQuery nên được sử dụng.
Vì vậy, nếu bạn muốn chạy bản cập nhật, xóa hoặc chèn câu lệnh, bạn nên sử dụng ExecuteNonQuery. ExecuteNonQuery trả về số hàng bị ảnh hưởng bởi câu lệnh. Điều này nghe có vẻ rất hay, nhưng bất cứ khi nào bạn sử dụng SQL Server 2005 IDE hoặc Visual Studio để tạo một thủ tục lưu sẵn, nó sẽ thêm một dòng nhỏ làm hỏng mọi thứ.
Dòng đó là: SET NOCOUNT ON; Dòng này bật tính năng NOCOUNT của SQL Server, "Dừng thông báo cho biết số hàng bị ảnh hưởng bởi lệnh Transact-SQL được trả về như là một phần của kết quả" và do đó nó làm cho thủ tục lưu sẵn luôn trả về -1 khi được gọi từ ứng dụng (trong trường hợp của tôi là một ứng dụng web).
Để kết luận, hãy xóa dòng đó khỏi quy trình được lưu trữ của bạn và bây giờ bạn sẽ nhận được một giá trị cho biết số hàng bị ảnh hưởng bởi câu lệnh.
Lập trình vui vẻ!
http://aspsoft.blogs.com/jonas/2006/10/executenonquery.html
Nguồn
2011-04-08 19:32:51
Giá trị trả về là gì, nếu chúng ta chạy một StoredProcedure sẽ chèn hoặc cập nhật hoặc xóa một bản ghi trong một Bàn, – Raghuveer