Печать исходного кода из хранимых процедур SQL Server 2005 - PullRequest
2 голосов
/ 26 октября 2011

У меня есть 40 или около того хранимых процедур, которые я хотел бы иметь возможность распечатать и выполнить рефакторинг на бумаге, а затем внести изменения в процедуры.Я сталкивался с несколькими различными возможностями, но ни одна из них не подходила так, как мне хотелось бы, но небольшая настройка могла бы это исправить.первый

select 
  text 
from 
  syscomments 
where 
  id in (select id from sysobjects where xtype='p' and name LIKE 'qscore_Corp%')

, но это возвращает весь код в неотформатированном виде в одной строке.

использование sp_helptext также вариант, но я не выяснил, как объединить несколько в одну длинную таблицу текста.

Моя цель - сделать так, чтобы я мог распечатать исходный текст этих 40 процедур из одного текстового файла с форматированием, которое я использовал в каждой процедуре.

решено ::: Мартину еще раз спасибо.Я внес небольшую поправку в его решение, которое вытянуло нужные мне проки.ОБЪЯВИТЬ @stored_procedure_code nvarchar (MAX) SET @stored_procedure_code = ''

    SELECT @stored_procedure_code = @stored_procedure_code + '' + ISNULL(OBJECT_DEFINITION(object_id),'')
    FROM sys.procedures WHERE name LIKE 'qscore_Corp%'

    SELECT  @stored_procedure_code AS [processing-instruction(x)] FOR XML PATH('') 

Ответы [ 2 ]

3 голосов
/ 26 октября 2011

что-то вроде

DECLARE @stored_procedure_code nvarchar(MAX) = ''

SELECT @stored_procedure_code = @stored_procedure_code + '
/*****************************************************************************/
GO

' + ISNULL(OBJECT_DEFINITION(object_id),'')
FROM sys.procedures 
WHERE object_id IN (object_id('foo'),object_id('foo_bar'))

SELECT  @stored_procedure_code AS [processing-instruction(x)] FOR XML PATH('') 
0 голосов
/ 26 октября 2011
SELECT definition
    FROM sys.sql_modules m
        INNER JOIN sys.objects o
            ON m.object_id = o.object_id
    WHERE o.type = 'P'
        AND o.name LIKE 'qscore_Corp%'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...