От: | Caracrist | https://1pwd.org/ | |
Дата: | 11.02.10 09:16 | ||
Оценка: |
S>create procedure test_proc
S>as
S>begin tran
S>ROLLBACK transaction
S>return
S>go
S>begin tran aa
S>exec test_proc
S>rollback tran aa
S>
S>Msg 266, Level 16, State 2, Procedure test_proc, Line 0
S>Transaction count after EXECUTE indicates that a COMMIT or ROLLBACK TRANSACTION statement is missing. Previous count = 1, current count = 0.
S>Msg 3903, Level 16, State 1, Line 5
S>The ROLLBACK TRANSACTION request has no corresponding BEGIN TRANSACTION.
S>В хранимых процедурах инструкция ROLLBACK TRANSACTION без аргументов savepoint_name или transaction_name откатывает все инструкции к самой внешней инструкции BEGIN TRANSACTION. Вызов инструкции ROLLBACK TRANSACTION в хранимой процедуре является причиной того, что значение @@TRANCOUNT после завершения хранимой процедуры отличается от значения @@TRANCOUNT при выдаче хранимой процедурой информационного сообщения. Это сообщение не влияет на последующую обработку.
alter procedure test_proc
as
SAVE tran cc
ROLLBACK tran cc
return
go
begin tran aa
exec test_proc
rollback tran aa