如何在SELECT语句中获取带架构名称的数据库存储过程?
解决SQL Server中查询带架构前缀的存储过程问题
嘿,我明白你想要的效果——把存储过程名带上架构前缀(比如dbo.usp_GetData),之前的语句失效确实是因为用错了对象:SCHEMA_NAME不是sys.procedures里的列,它是一个系统函数,需要传入架构ID才能返回对应的架构名称。
正确的查询语句(两种方法可选)
方法1:使用SCHEMA_NAME()函数直接转换
利用sys.procedures表中的schema_id列,传入SCHEMA_NAME()函数获取架构名,再和存储过程名拼接:
SELECT SCHEMA_NAME(schema_id) + '.' + name AS procedure_full_name FROM sys.procedures ORDER BY name;
方法2:关联sys.schemas表查询
如果你需要更多关于架构的信息,或者习惯用JOIN的方式,也可以关联sys.schemas表(存储所有架构信息的系统表):
SELECT s.name + '.' + p.name AS procedure_full_name FROM sys.procedures p INNER JOIN sys.schemas s ON p.schema_id = s.schema_id ORDER BY p.name;
扩展:查询更多存储过程信息
如果需要查看存储过程的创建时间、修改时间等额外信息,只需要在SELECT中添加对应列即可:
SELECT SCHEMA_NAME(p.schema_id) + '.' + p.name AS procedure_full_name, p.create_date AS 创建时间, p.modify_date AS 修改时间 FROM sys.procedures p ORDER BY p.name;
内容的提问来源于stack exchange,提问作者overwhelmedaf
相关产品推荐
相关产品推荐

