我正在编写一个在SQL Server 2008中的自定义函数。我知道函数不能按照通常的方式引发错误——如果你试图包含RAISERROR语句,SQL会返回:
Msg 443, Level 16, State 14, Procedure ..., Line ...
Invalid use of a side-effecting operator 'RAISERROR' within a function.
但事实上,该函数需要输入一些数据,这些数据可能无效,如果无效,则函数没有有意义的返回值。那我该怎么做呢?
当然,我可以返回NULL,但对于使用该函数的任何开发人员来说,这将很难进行故障排除。我也可以造成除以零等类似错误-这将生成一个错误消息,但是会导致误导。是否有任何方法可以报告自己的错误消息?
declare @error int; set @error = '在这里发生了错误.';
- Tim Lehner