code_junkie

Query to list SQL Server stored procedures along with lines of code for each procedure

Nov 12th, 2011
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.74 KB | None | 0 0
  1. sp_name lines_of_code
  2. -------- -------------
  3. DoStuff1 120
  4. DoStuff2 50
  5. DoStuff3 30
  6.  
  7. select t.sp_name, sum(t.lines_of_code) - 1 as lines_ofcode, t.type_desc
  8. from
  9. (
  10. select o.name as sp_name,
  11. (len(c.text) - len(replace(c.text, char(10), ''))) as lines_of_code,
  12. case when o.xtype = 'P' then 'Stored Procedure'
  13. when o.xtype in ('FN', 'IF', 'TF') then 'Function'
  14. end as type_desc
  15. from sysobjects o
  16. inner join syscomments c
  17. on c.id = o.id
  18. where o.xtype in ('P', 'FN', 'IF', 'TF')
  19. and o.category = 0
  20. and o.name not in ('fn_diagramobjects', 'sp_alterdiagram', 'sp_creatediagram', 'sp_dropdiagram', 'sp_helpdiagramdefinition', 'sp_helpdiagrams', 'sp_renamediagram', 'sp_upgraddiagrams', 'sysdiagrams')
  21. ) t
  22. group by t.sp_name, t.type_desc
  23. order by 1
  24.  
  25. SET NOCOUNT ON
  26.  
  27. DECLARE @ProcName varchar(100)
  28. DECLARE @LineCount int
  29.  
  30. DECLARE C CURSOR LOCAL FOR
  31. SELECT o.name as ProcName FROM sysobjects o WHERE (o.xtype = 'P') ORDER BY o.name
  32.  
  33. OPEN C
  34.  
  35. CREATE TABLE #ProcLines ([Text] varchar(1000))
  36.  
  37. FETCH NEXT FROM C INTO @ProcName
  38.  
  39. WHILE @@FETCH_STATUS = 0
  40. BEGIN
  41.  
  42. DELETE FROM #ProcLines
  43. INSERT INTO #ProcLines EXEC('sp_helptext ' + @ProcName + '')
  44.  
  45. SELECT @LineCount = COUNT(*) FROM #ProcLines
  46.  
  47. PRINT @ProcName + ' Lines: ' + LTRIM(STR(@LineCount))
  48.  
  49. FETCH NEXT FROM C INTO @ProcName
  50.  
  51. END
  52.  
  53. CLOSE C
  54.  
  55. DEALLOCATE C
  56.  
  57. DROP TABLE #ProcLines
  58.  
  59. SELECT o.type_desc AS ROUTINE_TYPE
  60. ,QUOTENAME(s.[name]) + '.' + QUOTENAME(o.[name]) AS [OBJECT_NAME]
  61. ,(LEN(m.definition) - LEN(REPLACE(m.definition, CHAR(10), ''))) AS LINES_OF_CODE
  62. FROM sys.sql_modules AS m
  63. INNER JOIN sys.objects AS o
  64. ON m.[object_id] = o.[OBJECT_ID]
  65. INNER JOIN sys.schemas AS s
  66. ON s.[schema_id] = o.[schema_id]
Add Comment
Please, Sign In to add comment