2008-10-29 38 views
6

當我嘗試對我的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或行號導致了這個問題。我怎樣才能找出錯誤發生的位置,以便我可以更輕鬆地進行調試?

回答

5

使用Try/Catch block應該給你你在找什麼。

在CATCH塊的範圍內,以下系統功能可以用於獲得關於導致要執行的CATCH塊中的錯誤信息:

* 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()應該是你想要的...

+0

它的工作原理!謝謝! – apenwarr 2008-10-29 21:40:28