用户定义函数中的错误处理

Cra*_*ker 9 sql-server error-handling sql-server-2005 function user-defined-functions

我想在SQL Server 2005中编写一个非CLR用户定义的函数.该函数接受一个输入字符串并返回一个输出字符串.如果输入字符串无效,那么我想向调用者指出错误.

我的第一个想法是使用RAISERROR来引发异常.但是,SQL Server不允许在UDF中使用它(尽管可以在基于CLR的UDF中引发异常,如图所示).

我的最后一种方法是在输入值出错时从函数返回NULL(或其他一些错误指示符值).但是,我不喜欢这个选项,因为它:

  1. 不向呼叫者提供任何有用的信息
  2. 不允许我在响应有效输入时返回NULL(因为它被用作错误代码).

是否有任何调用方友好的方法来暂停SQL Server中的错误函数?

mar*_*c_s 7

似乎SQL Server UDF在这个(以及许多其他方式)方面有点受限.

你真的无法做很多事情 - 那就是(现在)只是它的方式.要么你可以定义你的UDF,以便你可以通过它的返回值发出错误信号(例如,在出现错误时返回NULL),或者你几乎不得不求助于编写存储过程,这可能有更多错误处理并允许RAISERROR等等.

因此要么将UDF设计为不需要特定的错误条件信号,要么必须重新设计使用存储过程的方法(可以有多个OUTPUT参数,因此也可以返回错误代码和数据有效负载,如果你需要),或管理你的UDF的CLR代码.

对不起,我没有更好的主意 - 现在,我担心,这些是你的选择 - 接受你的选择.