首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在raiserror sqlserver上终止进程

在raiserror sqlserver上终止进程
EN

Stack Overflow用户
提问于 2021-08-31 07:36:34
回答 1查看 27关注 0票数 0

我需要知道如何让进程在遇到raiserror命令时停止

我尝试了不同的状态代码,比如1,-1,严重程度为16。但它不会停止这一过程。它将显示错误并继续执行下一步。

我想要一种方法来停止进程的其余部分,一旦遇到raiserror

代码语言:javascript
复制
create procedure p_testing
as
begin
RAISERROR('Error is raised',16,1);
insert into blah(si,name) values(1,'teasting_raiserror');
END

Exec p_testing
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-31 08:06:44

使用THROWXACT_ABORT

代码语言:javascript
复制
CREATE TABLE dbo.SomeTable (ID int IDENTITY(1,1), SomeString varchar(10));
GO

CREATE PROC dbo.SomeProc @SomeString varchar(10) AS
BEGIN
    
    SET XACT_ABORT ON;
    
    THROW 59000, N'A pointless error has been raised!', 16;

    INSERT INTO dbo.SomeTable (SomeString)
    VALUES (@SomeString);
END;
GO

EXEC dbo.SomeProc 'MyString';

--This statement won't be run
SELECT *
FROM dbo.SomeTable;
GO
--This will be, as in a separate batch
SELECT *, NULL AS AdditionalColumn
FROM dbo.SomeTable;
GO
--Clean up

DROP PROC dbo.SomeProc;
DROP TABLE dbo.SomeTable;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68994650

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档