有没有一种方法可以用特定数据库中所有存储过程的名称创建表

时间:2019-04-02 16:21:19

标签: sql sql-server database

我有一个数据库,该数据库在该特定数据库中有一个过程存储。任何人都可以用一种方法将所有存储过程的名称制成一个表,而不是手动键入每个表。我将如何编写查询?还有其他方法吗?

3 个答案:

答案 0 :(得分:1)

Sean Lange是正确的,您已经在sys.procedures表中有了数据。如果您仍然想创建表:

SELECT * INTO [Table_Name] FROM sys.procedures

答案 1 :(得分:1)

有很多方法可以获取存储过程列表

以下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'

答案 2 :(得分:0)

如果除了名称之外,您还想获取更多信息,也可以拉取。例如,这里有一个查询,它为数据库中的所有存储过程提取数据库,模式,过程,定义,创建日期和最后修改日期。您可以将此与调用sys.sp_MSforeachdb存储的proc结合起来,为服务器上的每个数据库创建一个表。

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