От: | vmpire | ||
Дата: | 11.02.10 10:14 | ||
Оценка: | -1 |
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>if @@TRANCOUNT > 0 rollback tran aa
S>
От: | Sshur | http://shurygin-sergey.livejournal.com | |
Дата: | 11.02.10 09:06 | ||
Оценка: |
create procedure test_proc
as
begin tran
ROLLBACK transaction
return
go
begin tran aa
exec test_proc
rollback tran aa
Msg 266, Level 16, State 2, Procedure test_proc, Line 0
Transaction count after EXECUTE indicates that a COMMIT or ROLLBACK TRANSACTION statement is missing. Previous count = 1, current count = 0.
Msg 3903, Level 16, State 1, Line 5
The ROLLBACK TRANSACTION request has no corresponding BEGIN TRANSACTION.
В хранимых процедурах инструкция ROLLBACK TRANSACTION без аргументов savepoint_name или transaction_name откатывает все инструкции к самой внешней инструкции BEGIN TRANSACTION. Вызов инструкции ROLLBACK TRANSACTION в хранимой процедуре является причиной того, что значение @@TRANCOUNT после завершения хранимой процедуры отличается от значения @@TRANCOUNT при выдаче хранимой процедурой информационного сообщения. Это сообщение не влияет на последующую обработку.
От: | 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
От: | Sshur | http://shurygin-sergey.livejournal.com | |
Дата: | 11.02.10 09:20 | ||
Оценка: |
C>alter procedure test_proc
C>as
C>SAVE tran cc
C>ROLLBACK tran cc
C>return
C>go
C>begin tran aa
C>exec test_proc
C>rollback tran aa
C>
alter procedure test_proc
as
if @@trancount=0
begin tran cc
else
SAVE tran cc
ROLLBACK tran cc
return
От: | Caracrist | https://1pwd.org/ | |
Дата: | 11.02.10 09:25 | ||
Оценка: |
alter procedure test_proc
as
BEGIN TRAN
SAVE tran cc
ROLLBACK tran cc
COMMIT TRAN
return
go
begin tran aa
exec test_proc
rollback tran aa
ROLLBACK TRANSACTION without a savepoint_name or transaction_name rolls back to the beginning of the transaction. When nesting transactions, this same statement rolls back all inner transactions to the outermost BEGIN TRANSACTION statement. In both cases, ROLLBACK TRANSACTION decrements the @@TRANCOUNT system function to 0. ROLLBACK TRANSACTION savepoint_name does not decrement @@TRANCOUNT.