Sql server 2005 T-SQL-返回自定义错误消息并结束查询

Sql server 2005 T-SQL-返回自定义错误消息并结束查询,sql-server-2005,tsql,asp.net-3.5,raiserror,Sql Server 2005,Tsql,Asp.net 3.5,Raiserror,我有一个很长的存储过程,我想在其中执行以下操作: IF @SubPageDirectory IS NULL BEGIN RAISERROR('@SubPageDirectory cannot be NULL', 10, 1) EXIT STORED PROCEDURE END 基本上,我希望检查变量是否为NULL,如果为NULL,则向.NET Web应用程序返回一条错误消息,并在该阶段停止运行查询。我如何才能做到这一点?@DaveShaw:不,它会继续执行。返回时似乎没有任何错

我有一个很长的存储过程,我想在其中执行以下操作:

IF @SubPageDirectory IS NULL
BEGIN
    RAISERROR('@SubPageDirectory cannot be NULL', 10, 1)
    EXIT STORED PROCEDURE
END

基本上,我希望检查变量是否为NULL,如果为NULL,则向.NET Web应用程序返回一条错误消息,并在该阶段停止运行查询。我如何才能做到这一点?

@DaveShaw:不,它会继续执行。返回时似乎没有任何错误,因为在中,它不会向用户显示错误,它只会继续。RAISERROR本身会继续读取存储过程,因为它会引发另一个错误。+1,但是,我会使它
返回n
,其中
n
是一个整数。我生成负返回值警告消息(无效用户输入等)和正返回值致命错误(插入失败等)。调用应用程序可以根据返回值为正/负来确定如何处理消息(硬停止和/或仅显示消息)。我已将严重性级别提高到16,现在我的asp.net web应用程序显示一个服务器错误页面,这正是我所希望的。Return还阻止了查询的继续。我以前忽略了严重性级别增加注释。抱歉,添加严重性级别16意味着“用户定义”。10是一个通常被忽略的警告
IF @SubPageDirectory IS NULL 
BEGIN 
    RAISERROR('@SubPageDirectory cannot be NULL', 16, 1) --change to > 10
    RETURN --exit now
END