Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 在错误进程中返回错误ID 50000_Sql Server_Tsql - Fatal编程技术网

Sql server 在错误进程中返回错误ID 50000

Sql server 在错误进程中返回错误ID 50000,sql-server,tsql,Sql Server,Tsql,我注意到,当在存储过程中触发此错误时,它返回50000。有没有办法将其修改为50999,这样前端应用程序就可以明确地识别错误,而不会将其与其他任何东西混淆 RAISERROR('Client already has an Active Visit!',16,1) 根据以下文件: 该消息作为服务器错误消息返回给调用方 应用程序或到TRY…CATCH构造的关联CATCH块。 新应用程序应改用抛出。 我的。() 我不知道您的SQL语句是什么样子的,但是,您可以这样做: BEGIN TRY

我注意到,当在存储过程中触发此错误时,它返回50000。有没有办法将其修改为50999,这样前端应用程序就可以明确地识别错误,而不会将其与其他任何东西混淆

RAISERROR('Client already has an Active Visit!',16,1)

根据以下文件:

该消息作为服务器错误消息返回给调用方 应用程序或到
TRY…CATCH
构造的关联
CATCH
块。 新应用程序应改用
抛出

我的。()

我不知道您的SQL语句是什么样子的,但是,您可以这样做:

BEGIN TRY 
     --Your INSERT statement
     SELECT 0/0; --Causes an error
END TRY
BEGIN CATCH
    THROW 50099, 'Client already has an Active Visit!',1;
END CATCH

根据以下文件:

该消息作为服务器错误消息返回给调用方 应用程序或到
TRY…CATCH
构造的关联
CATCH
块。 新应用程序应改用
抛出

我的。()

我不知道您的SQL语句是什么样子的,但是,您可以这样做:

BEGIN TRY 
     --Your INSERT statement
     SELECT 0/0; --Causes an error
END TRY
BEGIN CATCH
    THROW 50099, 'Client already has an Active Visit!',1;
END CATCH

您需要指定raiseerror函数的第一个参数,如下所示:

--configure the error message
sp_addmessage @msgnum = 50999,  
          @severity = 16,  
          @msgtext = N'Client %s already has an Active Visit!';   
GO

-- throw error
RAISERROR (50999, -- Message id.  
       16, -- Severity,  
       1, -- State,  
       N'123456789'); -- First argument supplies the string.  
GO  
输出将是

Msg 50999, Level 16, State 1, Line 8
Client 123456789 already has an Active Visit!

如果未指定错误号,则raiserror将假定为50000。文档…

您需要指定raiseerror函数的第一个参数,如下所示:

--configure the error message
sp_addmessage @msgnum = 50999,  
          @severity = 16,  
          @msgtext = N'Client %s already has an Active Visit!';   
GO

-- throw error
RAISERROR (50999, -- Message id.  
       16, -- Severity,  
       1, -- State,  
       N'123456789'); -- First argument supplies the string.  
GO  
输出将是

Msg 50999, Level 16, State 1, Line 8
Client 123456789 already has an Active Visit!

如果未指定错误号,则raiserror将假定为50000。文档…

使用RAISEERROR,如果使用message作为第一个参数,则无法指定错误ID,它隐式为50000。但是,您可以创建带有参数的自定义消息,并将代码传递给该消息。即:

RAISERROR('Client already has an Active Visit! - Specific Err.Number:[%d]',16,1, 50999)

另外,对于新应用程序,建议使用Try\Catch方法。

对于RAISEERROR,如果使用message作为第一个参数,则无法指定错误ID,它是隐式的。但是,您可以创建带有参数的自定义消息,并将代码传递给该消息。即:

RAISERROR('Client already has an Active Visit! - Specific Err.Number:[%d]',16,1, 50999)

另外,Try\Catch是新应用程序的建议方法。

@CetinBasoz如果正确,这将在“客户端已经有活动访问!”附近引发错误
Msg 102,级别15,状态1,第1行错误语法文档特别指出“当指定msg_str时,RAISERROR会引发一条错误消息,错误号为50000。”@CetinBasoz如果正确,则会在“客户端已经有活动访问!”附近引发错误
msg 102,级别15,状态1,第1行语法错误文档特别指出“当指定msg_str时,RAISERROR将引发一条错误消息,错误号为50000。”