簡體   English   中英

如何在select語句中包含存儲過程架構名稱

[英]How do I include a stored procedures schema name in a select statement

我想在我的數據庫中選擇所有存儲過程,並在其模式名稱前加一個。

例如,我希望我的輸出列顯示dbo.stored_procedure而不是僅僅stored_procedure

所以我想要的是

select SCHEMA_NAME + '.' + name
from sys.procedures
order by name

但這不會起作用,因為schema_name是無效的列名

如果您使用的是sys對象,則模式名稱位於另一個對象中:

SELECT QUOTENAME(s.name) + N'.' + QUOTENAME(p.name)
FROM sys.procedures p
     JOIN sys.schemas s ON p.schema_id = s.schema_id
ORDER BY p.name;

sys.procedures具有字段schema_id ,它是sys.schemas的外sys.schemas 所以你只需要加入它

select s.name + '.' + p.name
from sys.procedures p
inner join sys.schemas s
    on p.schema_id = s.schema_id
order by p.name

您可以使用INFORMATION_SHEMA.ROUTINES

select ROUTINE_SCHEMA + '.' + ROUTINE_NAME
from INFORMATION_SCHEMA.ROUTINES
where ROUTINE_TYPE = 'PROCEDURE';

您可以使用SPECIFIC_ROUTINE_ 但是, SPECIFIC_用於重載過程(即,兩個具有相同名稱但使用不同參數的過程)。 SQL Server不支持此功能。 但是,如果確實如此,則需要通用名稱。

您可以使用SCHEMA_NAME()函數獲取架構名稱為

SELECT CONCAT(QUOTENAME(SCHEMA_Name(schema_id)), N'.', QUOTENAME(Name)) Result
FROM Sys.Procedures
ORDER BY Name;
select SPECIFIC_SCHEMA + '.' + SPECIFIC_NAME
from INFORMATION_SCHEMA.ROUTINES

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM