当我查询作为表值函数实现的SQL Server 2008系统动态管理视图并返回一个空结果集时,如何判断空结果集的原因是该错误发生在函数,然后,那个错误是什么?
答案 0 :(得分:5)
他们没有。您不能在T-SQL函数中使用THROW或RAISERROR。某些开发人员强制除以0以在UDF内触发错误。这样做很好,但有时候会混淆那些必须调查除以0的错误的灵魂,这个错误来自于显而易见的无处。
答案 1 :(得分:3)
在TSQL中强制执行错误的方法比执行除零更有用。我们在公司做的是抛出一个字符串(描述这个问题)并将其转换为字符串。
if @PersonID is null
insert into @Result values(@Right, cast('FT_AclGetAccess must never be called with @PersonID null' as int))
这将导致应用程序服务器出现如下错误:
转换varchar值' FT_AclGetAccess时转换失败 永远不要用@PersonID null'数据类型int。
在应用程序服务器上进行一些字符串操作,您将获得日志文件的非常合理的错误消息! ; - )