odi*_*seh 4 t-sql sql-server logging stored-procedures transactions
我有一个SP(存储过程),其中包含一些T-SQL语句.....
所有T-sql语句都在一个事务块中,并且通过发生任何错误,我回滚所有事情.
像这样:
BEGIN TRANSACTION
.....
.....
IF @X=1
BEGIN
declare cu cursor for select col1,col2 from Table1 where Id=@Y
open cu
fetch next from cuinto @A, @B
while @@Fetch_Status = 0
BEGIN
.....
......
IF @@ERROR <>0
BEGIN
ROLLBACK TRANSACTION
RETURN
END
END
.....
.....
Run Code Online (Sandbox Code Playgroud)
Sp没有正常运行,我无法找到它的重要内容.....我认为通过在表中插入一些数据来记录sp中的每个操作是个好主意我的问题是:
因为它使用了一个事务,所以每次插入都会被回滚.....
你怎么看?还有其他方法吗?
谢谢
3件事:
1)请,如果你不需要,请不要使用游标.
2)您可以通过使用日志WITH LOG RAISERROR或插入数据表变量,然后将变成一只真正的表,你已经rolledback您的交易之后.这是可能的,因为表变量与事务无关.
3)使用try catch块
| 归档时间: |
|
| 查看次数: |
5491 次 |
| 最近记录: |