我有一个大约4000行长的存储过程;我在行号699中收到一个错误,但是我知道SSMS采用不同的行号。有什么办法可以找到确切的行号?
到目前为止我尝试过的方法。
sp_helptext proc_name
,但此查询未执行有什么办法找出正确的行号?
答案 0 :(得分:0)
您可以检查sys.sql_modules中的定义:
SELECT *
FROM sys.sql_modules
WHERE object_id = OBJECT_ID('proc_name');
编辑:
并拆分到特定行:
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