Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- sp_name lines_of_code
- -------- -------------
- DoStuff1 120
- DoStuff2 50
- DoStuff3 30
- select t.sp_name, sum(t.lines_of_code) - 1 as lines_ofcode, t.type_desc
- from
- (
- select o.name as sp_name,
- (len(c.text) - len(replace(c.text, char(10), ''))) as lines_of_code,
- case when o.xtype = 'P' then 'Stored Procedure'
- when o.xtype in ('FN', 'IF', 'TF') then 'Function'
- end as type_desc
- from sysobjects o
- inner join syscomments c
- on c.id = o.id
- where o.xtype in ('P', 'FN', 'IF', 'TF')
- and o.category = 0
- and o.name not in ('fn_diagramobjects', 'sp_alterdiagram', 'sp_creatediagram', 'sp_dropdiagram', 'sp_helpdiagramdefinition', 'sp_helpdiagrams', 'sp_renamediagram', 'sp_upgraddiagrams', 'sysdiagrams')
- ) t
- group by t.sp_name, t.type_desc
- order by 1
- SET NOCOUNT ON
- DECLARE @ProcName varchar(100)
- DECLARE @LineCount int
- DECLARE C CURSOR LOCAL FOR
- SELECT o.name as ProcName FROM sysobjects o WHERE (o.xtype = 'P') ORDER BY o.name
- OPEN C
- CREATE TABLE #ProcLines ([Text] varchar(1000))
- FETCH NEXT FROM C INTO @ProcName
- WHILE @@FETCH_STATUS = 0
- BEGIN
- DELETE FROM #ProcLines
- INSERT INTO #ProcLines EXEC('sp_helptext ' + @ProcName + '')
- SELECT @LineCount = COUNT(*) FROM #ProcLines
- PRINT @ProcName + ' Lines: ' + LTRIM(STR(@LineCount))
- FETCH NEXT FROM C INTO @ProcName
- END
- CLOSE C
- DEALLOCATE C
- DROP TABLE #ProcLines
- SELECT o.type_desc AS ROUTINE_TYPE
- ,QUOTENAME(s.[name]) + '.' + QUOTENAME(o.[name]) AS [OBJECT_NAME]
- ,(LEN(m.definition) - LEN(REPLACE(m.definition, CHAR(10), ''))) AS LINES_OF_CODE
- FROM sys.sql_modules AS m
- INNER JOIN sys.objects AS o
- ON m.[object_id] = o.[OBJECT_ID]
- INNER JOIN sys.schemas AS s
- ON s.[schema_id] = o.[schema_id]
Add Comment
Please, Sign In to add comment