Запрос списка всех хранимых процедур - PullRequest
302 голосов
/ 20 октября 2008

Какой запрос может возвращать имена всех хранимых процедур в базе данных SQL Server

Если бы запрос мог исключить системные хранимые процедуры, это было бы еще более полезно.

Ответы [ 22 ]

2 голосов
/ 27 февраля 2017

Я подправил превосходный пост LostCajun выше для исключения системных хранимых процедур. Я также удалил "Извлечь". из кода, потому что я не мог понять, для чего он нужен, и это дало мне ошибки. Оператору «fetch next» внутри цикла также требовалось предложение «into».

use <<databasename>>
go

declare @aQuery nvarchar(1024);
declare @spName nvarchar(64);
declare allSP cursor for
    select p.name  
    from sys.procedures p 
    where p.type_desc = 'SQL_STORED_PROCEDURE' 
    and LEFT(p.name,3) NOT IN ('sp_','xp_','ms_')
    order by p.name;
open allSP;
fetch next from allSP into @spName;
while (@@FETCH_STATUS = 0)
begin
    set @aQuery = 'sp_helptext [' + @spName + ']';
    exec sp_executesql @aQuery;
    fetch next from allSP into @spName;
end;
close allSP;
deallocate allSP;
2 голосов
/ 31 января 2018

Только имена:

SELECT SPECIFIC_NAME  
FROM YOUR_DB_NAME.information_schema.routines  
WHERE routine_type = 'PROCEDURE'
1 голос
/ 16 октября 2016

Это даст только имена хранимых процедур.

select specific_name
from information_schema.routines
where routine_type = 'PROCEDURE';
1 голос
/ 23 декабря 2014

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

use << database name >>
go

declare @aQuery nvarchar(1024);
declare @spName nvarchar(64);
declare allSP cursor for
select p.name  from sys.procedures p where p.type_desc = 'SQL_STORED_PROCEDURE' order by p.name;
open allSP;
fetch next from allSP into @spName;
while (@@FETCH_STATUS = 0)
begin
    set @aQuery = 'sp_helptext [Extract.' + @spName + ']';
    exec sp_executesql @aQuery;
    fetch next from allSP;
end;
close allSP;
deallocate allSP;
1 голос
/ 04 декабря 2012

Это, список всех вещей, которые вы хотите

В SQL Server 2005, 2008, 2012:

Use [YourDataBase]

EXEC sp_tables @table_type = "'PROCEDURE'" 
EXEC sp_tables @table_type = "'TABLE'"
EXEC sp_tables @table_type = "'VIEW'" 

OR

SELECT * FROM information_schema.tables
SELECT * FROM information_schema.VIEWS
1 голос
/ 20 октября 2008
select *  
  from dbo.sysobjects
 where xtype = 'P'
   and status > 0
0 голосов
/ 07 марта 2019

Здесь будут показаны все хранимые процедуры и код:

select sch.name As [Schema], obj.name AS [Stored Procedure], code.definition AS [Code] from sys.objects as obj
    join sys.sql_modules as code on code.object_id = obj.object_id
    join sys.schemas as sch on sch.schema_id = obj.schema_id
    where obj.type = 'P'
0 голосов
/ 17 декабря 2018
USE DBNAME

select ROUTINE_NAME from information_schema.routines 
where routine_type = 'PROCEDURE'


GO 

Это будет работать на mssql.

0 голосов
/ 25 июня 2018

лучший способ получить объекты - использовать sys.sql_modules. из этой таблицы вы можете найти все, что хотите, и объединить эту таблицу с другой таблицей, чтобы получить дополнительную информацию по object_id

SELECT o. object_id,o.name AS name,o.type_desc,m.definition,schemas.name scheamaName
FROM sys.sql_modules        m 
    INNER JOIN sys.objects  o ON m.object_id=o.OBJECT_ID
    INNER JOIN sys.schemas ON schemas.schema_id = o.schema_id
    WHERE [TYPE]='p'
0 голосов
/ 14 марта 2018
select * from DatabaseName.INFORMATION_SCHEMA.ROUTINES where routine_type = 'PROCEDURE'

select * from DatabaseName.INFORMATION_SCHEMA.ROUTINES where routine_type ='procedure' and left(ROUTINE_NAME,3) not in('sp_', 'xp_', 'ms_')


   SELECT name, type   FROM dbo.sysobjects
 WHERE (type = 'P')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...