当我查询一个作为表值函数实现的SQL Server 2008系统动态管理视图时,如果返回一个空结果集,我该如何确定为空结果集的原因是函数中出现了错误,并且该错误是什么?
当我查询一个作为表值函数实现的SQL Server 2008系统动态管理视图时,如果返回一个空结果集,我该如何确定为空结果集的原因是函数中出现了错误,并且该错误是什么?
在TSQL中,有一种比除以零更有效的方法可以强制在函数内部引发错误。我们公司所做的是将一个描述问题的字符串进行强制转换并转换为字符串。
if @PersonID is null
insert into @Result values(@Right, cast('FT_AclGetAccess must never be called with @PersonID null' as int))
他们不行。在T-SQL函数中,您不能使用THROW或RAISERROR。一些开发人员会强制在UDF内部触发一个除以0的错误来引发错误。这样做可以正常工作,但有时会让调查明显无从而起的除以0错误的可怜灵魂感到困惑。