【发布时间】:2011-11-03 19:25:17
【问题描述】:
如果由于违反外键约束而无法成功执行删除语句,是否有办法中止 SQL Server 中的存储过程?默认情况下,该过程似乎会忽略错误并继续执行下一条语句。
但是,对于其他类型的错误(例如,从不存在的表中删除),过程中止。
示例程序:
SET ANSI_NULLS ON
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[TestSP]
AS
BEGIN
SET NOCOUNT ON;
print 'BEFORE';
DELETE FROM ExistingWithConstraints;
print 'AFTER DELETE ExistingWithConstraints';
DELETE FROM NonExisting;
print 'AFTER DELETE NonExisting';
END
产生输出(注意上面的最后一条消息没有打印出来):
BEFORE
<snip constraint violation error message>
AFTER DELETE ExistingWithConstraints
<snip invalid object name error message>
【问题讨论】:
标签: sql-server stored-procedures