Запрос для списка хранимых процедур SQL Server наряду со строками кода для каждой процедуры

Возможно, попробуйте сделать это, создав список различных индексов, например:

times = [int(x[1][:2]) for x in your_array]
previous = 0
index=[1]
next_agent= 2
for time in times:
    if time >= previous:
        index.append(‘´)
    else:
        index.append(next_agent)
        next_agent+=1
    previous = time

, а затем установите df:

df= DataFrame(your_array, index=index, columns=column)
18
задан Simon D 14 November 2008 в 21:57
поделиться

4 ответа

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

Отредактированный, таким образом, это должно также теперь работать в SQL Server 2000 - 2008 и исключить связанный со схемой базы данных sprocs и funcs (которые появляются как пользовательские созданные объекты).

49
ответ дан 30 November 2019 в 06:12
поделиться

Это работает на MS-SQL 2000

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
2
ответ дан 30 November 2019 в 06:12
поделиться

FWIW, вот еще один:

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]
7
ответ дан 30 November 2019 в 06:12
поделиться
select * from sysobjects where type = 'p'
-3
ответ дан 30 November 2019 в 06:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: