Nếu tôi có một thủ tục được lưu trữ thực hiện một thủ tục đã lưu khác nhiều lần với các đối số khác nhau, có thể có mỗi cuộc gọi này cam kết độc lập với các cuộc gọi khác không?Làm cách nào để đảm bảo rằng các giao dịch lồng nhau được cam kết độc lập với nhau?
Nói cách khác, nếu hai lần thực thi đầu tiên của thủ tục lồng nhau thành công, nhưng lệnh thứ ba thất bại, có thể bảo toàn kết quả của hai lần thực hiện đầu tiên (và không cuộn chúng trở lại) không?
Tôi đã một thủ tục được xác định một cái gì đó được lưu trữ như thế này trong SQL Server 2000:
CREATE PROCEDURE toplevel_proc ..
AS
BEGIN
...
while @row_count <= @max_rows
begin
select @parameter ... where rownum = @row_count
exec nested_proc @parameter
select @row_count = @row_count + 1
end
END
"sử dụng ROLLBACK TRAN thay vì ROLLBACK TRAN" ?? – Greg
@Greg - cảm ơn vì đã chỉ ra điều đó. Văn bản tôi đã trích dẫn các dấu ngoặc nhọn được sử dụng xung quanh văn bản 'savepoint_name' và điều đó khiến công cụ đánh dấu SO ẩn văn bản. Đã chỉnh sửa văn bản để sử dụng dấu ngoặc vuông. – Tony
Cảm ơn bạn đã sửa nó! – Greg