SQL Server:Error_Line返回的行号与存储过程的行号不匹配

时间:2018-08-23 18:10:59

标签: sql sql-server tsql stored-procedures

我有一个大约4000行长的存储过程;我在行号699中收到一个错误,但是我知道SSMS采用不同的行号。有什么办法可以找到确切的行号?

到目前为止我尝试过的方法。

  1. 将粘贴的存储过程复制到编辑工具并检查行号
  2. 尝试调试,但无法
  3. 尝试过此sp_helptext proc_name,但此查询未执行

有什么办法找出正确的行号?

1 个答案:

答案 0 :(得分:0)

您可以检查sys.sql_modules中的定义:

SELECT *
FROM sys.sql_modules
WHERE object_id = OBJECT_ID('proc_name');

DBFiddle Demo


编辑:

并拆分到特定行:

SELECT s.object_id, s.definition, s2.*
FROM sys.sql_modules s
CROSS APPLY (SELECT *, ROW_NUMBER() OVER(ORDER BY 1/0) 
             FROM STRING_SPLIT(s.definition, CHAR(10))) s2(line, rn)
WHERE object_id = OBJECT_ID('test')  -- proc name
  AND rn = 5;  -- error line

DBFiddle Demo2

DBFiddle Demo3