如何找到最长存储过程的名称?

TCM*_*TCM 3 sql-server sql-server-2008

我有一个包含100个存储过程的数据库.我想找到这些中最长的存储过程.我怎么能找到它?

目前我正在使用

Select text,MAX(len(text)) from syscomments group by text;

但我无法在其中找到存储过程的名称.

提前致谢 :)

Mar*_*ith 10

sys.comments将长定义划分为4000个字符块.使用sys.sql_modules以避免此问题.

SELECT TOP 1 
    OBJECT_NAME(object_id) AS Name, 
    LEN(definition) AS Length, 
    CAST((SELECT definition AS [processing-instruction(x)] FOR XML PATH('')) AS XML) AS Definition
FROM sys.sql_modules
WHERE OBJECTPROPERTY(object_id, 'IsProcedure')=1
ORDER BY LEN(definition) DESC
Run Code Online (Sandbox Code Playgroud)

  • +1,可能想在选择列表中添加一个`,LEN(定义)`,只是为了它的乐趣! (4认同)
  • 为了奖励乐趣,我添加了一个将检索整个定义的列.(XML技巧避免在管理工作室中被截断) (2认同)