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

#sql #sql-server #database

#sql #sql-сервер #База данных

Вопрос:

У меня есть база данных, в которой есть хранилище процедур в этой конкретной базе данных. Есть ли способ, которым любой может создать таблицу имен всех хранимых процедур в виде таблицы, вместо того чтобы вручную вводить каждую из них. Как бы я написал запрос? Есть ли какой-либо другой способ сделать это?

Комментарии:

1. Почему вы хотите это сделать? У вас уже есть эти данные, которые легко доступны? выберите * из sys.procedures learn.microsoft.com/en-us/sql/relational-databases /…

2.Или SELECT name FROM Sys.Objects WHERE Type = 'P';

Ответ №1:

Шон Ланге прав, у вас уже есть данные в таблице sys.procedures. На случай, если вы все еще хотите создать таблицу:

 SELECT * INTO [Table_Name] FROM sys.procedures
  

Ответ №2:

Есть много способов получить список хранимых процедур

Здесь после 3 способов: Последний — это старый способ, во времена sql server 2000

 select name,create_date,modify_date from sys.procedures 
select name,create_date,modify_date from sys.objects  where type='p'
select name,crdate,refdate from sysobjects where xtype='p'
  

Ответ №3:

Если вам нужна дополнительная информация, помимо просто имен, вы можете извлечь и это. Например, вот запрос, который извлекает базу данных, схему, процедуру, определение, дату создания и дату последнего изменения для всех хранимых процедур в базе данных. Вы могли бы объединить это с вызовом хранимой процедуры sys.sp_MSforeachdb для создания таблицы для каждой базы данных на сервере.

 SELECT
    DB_NAME() AS [Database],
    s.name AS [Schema],
    p.name AS [Procedure],
    ISNULL(d.definition,'***ENCRYPTED PROCEDURE***') AS [Definition],
    p.create_date,
    p.modify_date
INTO [Table_Name]
FROM sys.procedures AS p
JOIN sys.sql_modules AS d on p.object_id = d.object_id
JOIN sys.schemas AS s on p.schema_id = s.schema_id