Sql server 如何在SQL Server中引发自定义异常
我有一个存储过程Sql server 如何在SQL Server中引发自定义异常,sql-server,sql-server-2008,tsql,exception,Sql Server,Sql Server 2008,Tsql,Exception,我有一个存储过程spMyProc。将表名作为参数@TableName传递给过程。在进入程序主体之前,验证表格是否存在非常重要 如果表名无效,如何创建自定义异常以引发错误 我知道TRY和CATCH但我不确定如何将其与自定义异常结合起来 尊敬。我认为这里提供的一个示例应该与您的问题相匹配。SQL Server的新版本将使用而不是RAISERROR。查看RAISERROR()函数 试试。。CATCH的工作原理与它在任何其他编程语言中的工作原理基本相同 BEGIN TRY -- do your c
spMyProc
。将表名作为参数@TableName
传递给过程。在进入程序主体之前,验证表格是否存在非常重要
如果表名无效,如何创建自定义异常以引发错误
我知道TRY
和CATCH
但我不确定如何将其与自定义异常结合起来
尊敬。我认为这里提供的一个示例应该与您的问题相匹配。SQL Server的新版本将使用而不是RAISERROR。查看RAISERROR()函数 试试。。CATCH的工作原理与它在任何其他编程语言中的工作原理基本相同
BEGIN TRY
-- do your checks
IF NOT EXISTS(SELECT 1 FROM sys.tables WHERE NAME = @TableName)
BEGIN
RAISERROR('Table does not exist', 16,1)
END
-- rest of the code if checks are passed
-- if above checks are not passed and you riase an error
-- control will skip any code in TRY Block after the error has been
-- Raised and staright jump to Catch block.
END TRY
BEGIN CATCH
-- Do your error logging
-- Other stuff
-- you have access to ERROR_ functions here to get detailed info about errors
END CATCH
您可以使用try-catch和raiseerror来处理自定义异常,例如:
begin try
--sql statements
end try
begin catch
RAISERROR
(
ERROR_MESSAGE(), -- or add your custom message
ERROR_SEVERITY(),
1,
ERROR_NUMBER(), -- parameter: original error number.
ERROR_SEVERITY(), -- parameter: original error severity.
ERROR_STATE(), -- parameter: original error state.
ISNULL(ERROR_PROCEDURE(), '-'), -- parameter: original error procedure name.
ERROR_LINE() -- parameter: original error line number.
end catch
哪个版本的SQL Server?在2012年,我们得到了一个新的
THROW
关键字……不幸的是,2008年!我迫不及待地想升级到2014年。你应该能够通过这份声明实现你想要的