![](/img/trans.png)
[英]How do I write stored procedures to update one table of one schema from another table of a different schema?
[英]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.