我们正在向产品中添加一些存储过程,可以被第三方客户端调用。有没有关于参数验证、返回值、RAISERROR等方面的最佳实践?
第三方客户端将无法直接访问表格,只能访问某些存储过程。受存储过程影响的表格已经很好地限制了,但是我们希望在存储过程被错误调用时提供尽可能详细的错误信息,以便用户更加友好。
第三方客户端将无法直接访问表格,只能访问某些存储过程。受存储过程影响的表格已经很好地限制了,但是我们希望在存储过程被错误调用时提供尽可能详细的错误信息,以便用户更加友好。
示例:
SET NOCOUNT, XACT_ABORT ON
...
BEGIN TRY
IF @parameter1 IS NULL
RAISERROR ('INFO: "parameter1" should not be blank', 16, 1)
IF @parameter2 < 0
RAISERROR ('INFO: "parameter2" must be greate then zero', 16, 1)
...
END TRY
BEGIN CATCH
DECLARE @MyError nvarchar(2048)
SELECT @MyError = ERROR_MESSAGE() -- + other stuff, like stored proc name perhaps
RAISERROR (@MyError, 16, 1)
...
END CATCH