SQL Server表值函数如何报告错误?

时间:2011-02-22 21:20:08

标签: sql-server sql-server-2008

当我查询作为表值函数实现的SQL Server 2008系统动态管理视图并返回一个空结果集时,如何判断空结果集的原因是该错误发生在函数,然后,那个错误是什么?

2 个答案:

答案 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。

在应用程序服务器上进行一些字符串操作,您将获得日志文件的非常合理的错误消息! ; - )