2009-04-20 23 views
9

Tôi tự hỏi nếu nó có thể có nhiều báo cáo Cập nhật trong một thủ tục lưu trữNhiều báo cáo cập nhật trong một StoredProcedure

Something như thế này:

Update Table1 set field1 = @new_value where id = @table1_id 

Update Table2 set field2 = @new_value where id = @table2_id 

Update Table3 set field3 = @new_value where id = @table3_id 

Ngay bây giờ tôi đang thực hiện chúng một cách riêng biệt nhưng khi họ chỉ được sử dụng cùng nhau, tôi tự hỏi liệu chúng có thể được đặt trong chỉ một SP.

+1

đây là một lý do để sử dụng thủ tục lưu trữ, thêm giao dịch và xử lý lỗi và bạn có một giải pháp tốt –

Trả lời

22

Vâng, nó có thể:

CREATE PROCEDURE prc_update (@table1_id INT, @table2_id INT, @table3_id INT, @new_value INT) 
AS 
BEGIN 
     UPDATE Table1 
     SET  field1 = @new_value 
     WHERE id = @table1_id 

     UPDATE Table2 
     SET  field2 = @new_value 
     WHERE id = @table2_id 

     UPDATE Table3 
     SET  field3 = @new_value 
     WHERE id = @table3_id 
END 
+0

wow hơi xấu hổ, tôi tất nhiên đã thử điều này và giữ lỗi cú pháp và bằng cách nào đó rút ra kết luận có thể theo cách này, chỉ cần thử lại và hoạt động hoàn hảo! Cảm ơn :) –

+0

@ The napster thực: Bạn có đánh dấu câu trả lời của Quassnoi là câu trả lời không? Cảm ơn. – Sung

8

Vâng, đó là hoạt động tốt.

Cũng đặt này trong thủ tục lưu trữ trước khi cập nhật:

set nocount on 

Điều này sẽ giúp các thủ tục lưu trữ từ việc tạo ra bộ kết quả cho truy vấn mà không cần một kết quả. Nếu không, mỗi bản cập nhật sẽ tạo ra một tập kết quả trống được gửi lại cho máy khách.

6

Bạn cũng nên bao bọc các thống kê đó trong các giao dịch để nếu tất cả các lỗi không được cuộn lại.

Các vấn đề liên quan