【发布时间】:2011-01-07 18:37:36
【问题描述】:
如何计算我在数据库中编写的所有存储过程?
【问题讨论】:
标签: sql sql-server
如何计算我在数据库中编写的所有存储过程?
【问题讨论】:
标签: sql sql-server
select Count(*) from sys.procedures
正如 Philip Kelley 所说,这是 sql 2005 及更高版本
【讨论】:
-- 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'
【讨论】:
获取存储过程计数:
SELECT COUNT(*) SPCOUNT
FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_TYPE='PROCEDURE'
或:
SELECT COUNT(*)
FROM sys.procedures
或:
SELECT COUNT(*)
FROM sys.sysobjects
WHERE xtype = 'P'
希望这些帮助之一。
【讨论】:
正如 OP 在评论中指出的那样,all 早期的答案都是错误的,因为它们包含 system 程序。他特别要求提供“由我编写”的程序——后来在另一条评论中澄清了“系统程序以外,由我或任何使用该数据库的人编写。”
所以要排除系统过程,我在 sys.procedures 中看到的唯一区别字段是名称。因此,您需要在任何其他答案中添加 WHERE 子句,如下所示:
select count(*) from sys.procedures
where name not like 'sp_%'
【讨论】:
SELECT COUNT(*)
FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_TYPE = 'PROCEDURE'
【讨论】:
select count(name)
from sys.objects
where type = 'P'
【讨论】:
select count(*)
from sysobjects
where xtype='P'
【讨论】: