📜  tsql 查找具有名称的过程 - SQL (1)

📅  最后修改于: 2023-12-03 15:35:22.953000             🧑  作者: Mango

T-SQL 查找具有名称的过程

在 SQL 数据库中,过程是一组可重复执行的脚本或者 SQL 查询语句。过程可以接收输入参数,并返回输出结果。在 T-SQL 中,可以使用下面的语句来创建一个过程:

CREATE PROCEDURE procedure_name
   @param1 datatype [ = default_value ] ,
   @param2 datatype [ = default_value ]
AS 
BEGIN
   -- SQL 语句
END

其中,procedure_name 是过程的名称,@param1@param2 是输入参数的名称和类型,[ = default_value ] 是可选的默认参数值,BEGINEND 之间的语句是过程的执行体。

如果你想查找数据库中具有名称的过程,可以使用下面的 T-SQL 查询语句:

SELECT name
FROM sys.procedures
WHERE is_ms_shipped = 0
ORDER BY name;

这条语句使用了 sys.procedures 系统视图来获得所有非 Microsoft 所提供的系统存储过程的名称,并按名称进行排序。

示例

以下是一个完整的 T-SQL 脚本示例,用于查找并显示具有名称的过程:

SELECT 
   [ProcedureName] = p.name, 
   [ParameterCount] = COUNT(p.parameters_id),
   [CreateDate] = CONVERT(nvarchar(30),p.create_date,126),
   [ModifyDate] = CONVERT(nvarchar(30),p.modify_date,126),
   [LastExecution] = CONVERT(nvarchar(30),qs.last_execution_time,126)
FROM 
   sys.procedures AS p
LEFT OUTER JOIN sys.dm_exec_procedure_stats AS qs ON p.object_id = qs.object_id
WHERE 
   p.is_ms_shipped = 0
GROUP BY 
   p.name, 
   p.create_date, 
   p.modify_date, 
   qs.last_execution_time
ORDER BY 
   p.name;

输出结果类似于:

| ProcedureName | ParameterCount | CreateDate | ModifyDate | LastExecution | | ------------- | -------------- | ----------------------| -----------------------| -----------------------| | procedure1 | 2 | 2022-05-01T10:00:00Z | 2022-05-01T10:30:00Z | 2022-05-02T09:00:00Z | | procedure2 | 1 | 2022-05-02T12:00:00Z | 2022-05-04T10:30:00Z | NULL | | procedure3 | 0 | 2022-04-29T08:30:00Z | 2022-04-29T09:00:00Z | 2022-05-03T11:30:00Z |

这条语句使用了 sys.dm_exec_procedure_stats 动态管理视图来获取过程的最后执行时间,以补充 sys.procedures 视图中提供的信息。此外,它还显示了过程的参数数量、创建时间以及修改时间。

总结

通过使用 T-SQL,我们可以很方便地查找数据库中具有名称的过程。通过使用系统视图和动态管理视图,我们可以获取有关过程的详细信息,如创建时间、修改时间、参数数量和最后执行时间。这对于开发人员来说是非常有用的,因为它可以帮助他们了解其代码库中的过程,并更好地维护和优化它们。