我们有一个查询,在选择列表中有数百个函数。
其中一个函数抛出异常。
错误信息没有指明错误函数的正确行。它只显示Select语句开始的行号。
使用SSMS v18.12.1
您可以通过运行以下sql语句来复制它:
SELECT
1,
2,
3,
1/0
输出:
Msg 8134, Level 16, State 1,Line 1除以遇到的零错误
显然错误来自第5行.
注意:添加TRY和CATCH块并不能提供更多线索:
BEGIN TRY
SELECT
1,
2,
3,
1/0
END TRY
BEGIN CATCH
SELECT CONCAT(ERROR_MESSAGE(), ' Line: ', ERROR_LINE())
END CATCH
输出:除以遇到的零错误。线:2
错误指示在您的示例中的第1行,因为它是基于集合的查询,即其中一个函数出错导致整个SELECT出错。
似乎您要做的是逐一遍历每个函数以检查错误。虽然我通常不愿意推荐游标,但这似乎是一个允许您逐步执行每个函数的选项。