gpt4 book ai didi

sql-server - 如何找出哪个存储过程的哪一行发生了错误?

转载 作者:行者123 更新时间:2023-12-02 20:05:00 38 4
gpt4 key购买 nike

当我尝试在 MS SQL 2005 数据库上运行特定存储过程时,出现如下错误:

Subquery returned more than 1 value. This is not permitted when
the subquery follows =, !=, <, <= , >, >= or when the subquery
is used as an expression

查询的SP很长,会调用其他SP。这个错误显然是由 SQL 本身产生的,并一直返回到调用堆栈,但没有提及哪个 SP 或行号导致了问题。如何找出错误的抛出位置,以便更轻松地进行调试?

最佳答案

使用Try/Catch block应该会给你你正在寻找的东西。

在 CATCH block 的范围内,可以使用以下系统函数来获取有关导致 CATCH block 执行的错误的信息:

* ERROR_NUMBER() returns the number of the error.
* ERROR_SEVERITY() returns the severity.
* ERROR_STATE() returns the error state number.
* ERROR_PROCEDURE() returns the name of the stored procedure or trigger where the error occurred.
* ERROR_LINE() returns the line number inside the routine that caused the error.
* ERROR_MESSAGE() returns the complete text of the error message. The text includes the values supplied for any substitutable parameters, such as lengths, object names, or times.

因此,就您而言,ERROR_LINE() 和 ERROR_PROCEDURE() 应该是您想要的......

关于sql-server - 如何找出哪个存储过程的哪一行发生了错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/248354/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com