以 SQL Server 2000 文档为例,或类似
Use Northwind
Go
Alter Procedure spu_UpdateOrderDetails(
@ProductID Int,
@OrderId Int,
@ErrorCode Int OutPut,
@ErrorMessage Varchar(100) Output
)
As
UPDATE [Order Details]
SET ProductID = @ProductID
WHERE OrderID = @OrderId
Set @ErrorCode = @@ERROR
IF @ErrorCode <> 0
Set @ErrorMessage = 'Some error ocurred'
GO
Declare @MyErrorCode Int
Declare @MyErrorMsg Varchar(100)
Exec spu_UpdateOrderDetails 999, 10248, @MyErrorCode OutPut, @MyErrorMsg OutPut
Print @MyErrorCode
Print @MyErrorMsg
这将导致外键错误,我将正确打印@MyErrorMsg。但我仍然得到丑陋的外键错误。
现在,如果我从我的应用程序中运行,它可能是 Delphi 或 Visual Studio,我仍然会收到丑陋的错误消息。
我应该如何“捕获”错误,以便向用户显示我的自定义错误?
(我知道较新的 SQL Server 版本提供 Try/Catch,但这是 SQL Server 2000)