要查询一个存储过程被哪些其它存储过程引用,在SQL Server中可以使用以下步骤:
- 使用系统存储过程
sp_depends
查询被引用的存储过程名
sp_depends <stored_proc_name>;
其中,<stored_proc_name>
是要查询的存储过程名。如果该存储过程被引用,则该语句将返回被引用该存储过程的对象列表,包括存储过程、触发器、视图、函数、表等。
- 进一步,可以使用以下查询语句查找哪些存储过程引用了该存储过程:
SELECT referencing_schema_name, referencing_entity_name, referencing_id
FROM sys.dm_sql_referencing_entities('<object_schema_name>.<object_name>', 'OBJECT')
WHERE referencing_class = 1
其中,<object_schema_name>
是存储过程所在的模式名,<object_name>
是存储过程名。
下面是两个实际应用的示例说明:
- 假设有一个名为
GetCustomerInfo
的存储过程,想要查询哪些存储过程引用了它。可以使用以下语句:
SELECT referencing_schema_name, referencing_entity_name, referencing_id
FROM sys.dm_sql_referencing_entities('dbo.GetCustomerInfo', 'OBJECT')
WHERE referencing_class = 1
这个查询语句将返回所有直接或间接引用dbo.GetCustomerInfo
的存储过程名、模式名和对象ID。
- 又假设有一个名为
UpdateCustomerInfo
的存储过程,想要查询哪些对象引用了它,包括存储过程、触发器、视图等。可以使用以下语句:
sp_depends @objname = N'UpdateCustomerInfo';
这个查询语句将返回所有引用了UpdateCustomerInfo
的存储过程、触发器、视图、函数等对象名和顶级对象名。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:在SQL Server中使用SQL语句查询一个存储过程被其它所有的存储过程引用的存储过程名 - Python技术站