我该如何执行一个SP,并根据它的结果执行另一个查询,如果失败应该恢复SP做了什么?

问题描述:

我认为这是一个基本的SQL问题... sorry..new它... :-)我该如何执行一个SP,并根据它的结果执行另一个查询,如果失败应该恢复SP做了什么?

我想执行其内部

{ 

我想执行一个SP(SP一使用EXEC)并根据它的结果我想要执行另一个查询(INSERT),如果因任何原因失败应该恢复SP做了什么?

} 

我该怎么做?

交易?如果是,如何?

请注意,内部SP发出一封邮件。

事情是这样的:

BEGIN TRAN 

DECLARE @rc int 

EXEC @rc = EXEC inner_proc 

IF (@rc = 1) 
    INSERT something 

IF @@ERROR <> 0 
    ROLLBACK 
ELSE 
    COMMIT 
+0

如果什么inner_proc发送邮件给别人?它会回滚吗? – Manish 2010-01-05 12:27:19

+0

只有当你有一个交易邮件服务器...... – 2010-01-05 12:29:10

+4

但是,严肃地说,处理这个问题的最好方法可能是将邮件排列在数据库表中并让后台进程加载并发送它们。然后,在这种情况下,邮件插入将回滚。 – 2010-01-05 12:30:03