如何计算SQL Server中数据库的所有存储过程?

Nov*_*Net 18 sql sql-server

如何计算我在数据库中编写的所有存储过程?

Con*_*rix 43

select Count(*) from sys.procedures
Run Code Online (Sandbox Code Playgroud)

正如Philip Kelley所说,这是sql 2005及以上版本


Nei*_*ght 10

要获取存储过程计数:

SELECT COUNT(*) SPCOUNT 
  FROM INFORMATION_SCHEMA.ROUTINES
 WHERE ROUTINE_TYPE='PROCEDURE'
Run Code Online (Sandbox Code Playgroud)

要么:

SELECT COUNT(*)
  FROM sys.procedures
Run Code Online (Sandbox Code Playgroud)

要么:

SELECT COUNT(*) 
  FROM sys.sysobjects
 WHERE xtype = 'P'
Run Code Online (Sandbox Code Playgroud)

希望其中一个有所帮助.


小智 9

-- Information about table -- 
SELECT * FROM sys.sysobjects WHERE xtype = 'U'

-- Information about Stored Procedure --
SELECT * FROM sys.sysobjects WHERE xtype = 'P'

-- Information about Functions --
SELECT * FROM sys.sysobjects WHERE xtype = 'FN'

-- Information about Views --
SELECT * FROM sys.sysobjects WHERE xtype = 'V'
Run Code Online (Sandbox Code Playgroud)


小智 7

正如OP在评论中指出的那样,所有早期的答案都是错误的,因为它们包括系统程序。他特别要求提供“由我编写”的程序,后来在另一条评论中澄清“除了系统程序,由我或任何在该数据库上工作的人编写”。

因此,为了排除系统过程,我在 sys.procedures 中看到的唯一区分字段是名称。因此,您需要向任何其他答案添加 WHERE 子句,如下所示:

select count(*) from sys.procedures
where name not like 'sp_%'
Run Code Online (Sandbox Code Playgroud)