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
Đã chỉnh sửa để bây giờ cũng sẽ hoạt động trong SQL Server 2000- 2008 và loại trừ sprocs liên quan đến Sơ đồ cơ sở dữ liệu và funcs (xuất hiện như đối tượng do người dùng tạo).
Nguồn
2008-11-14 22:21:44
How are you đếm "dòng"? Số lượng ký tự tùy ý, số dòng/dòng vận chuyển, hoặc cái gì? –
Lợi nhuận dòng/vận chuyển dòng - giống như bạn sẽ thấy trong Mgt Studio khi bạn viết CREATE PROC cho proc. Nhưng nó không cần phải chính xác 100%. –
Chỉ đủ tốt để có được một ý tưởng thô nơi sự phức tạp trong cơ sở dữ liệu. –