適用於:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Microsoft Fabric 中的 SQL 資料庫
傳回目前環境中的預存程序清單。
語法
sp_stored_procedures
[ [ @sp_name = ] N'sp_name' ]
[ , [ @sp_owner = ] N'sp_owner' ]
[ , [ @sp_qualifier = ] N'sp_qualifier' ]
[ , [ @fUsePattern = ] fUsePattern ]
[ ; ]
引數
[ @sp_name = ] N'sp_name'
用來傳回目錄資訊的程式名稱。
@sp_name為 nvarchar(390),預設值為 NULL。 支援通配符模式比對。
[ @sp_owner = ] N'sp_owner'
程序所屬之結構描述的名稱。
@sp_owner為 nvarchar(384),預設值為 NULL。 支援通配符模式比對。 如果未 指定@sp_owner ,則會套用基礎資料庫管理系統 (DBMS) 的預設程序可見性規則。
在 SQL Server 中,如果目前的架構包含具有指定名稱的程式,則會傳回該程式。 如果指定非限定預存程式,資料庫引擎會依下列順序搜尋程式:
目前資料庫的
sys結構描述。如果在批次或動態 SQL 中執行,則呼叫端的默認架構;或者,如果非限定程式名稱出現在另一個程式定義的主體內,則接下來會搜尋包含此其他程序的架構。
目前資料庫中的
dbo結構描述。
[ @sp_qualifier = ] N'sp_qualifier'
程式限定元的名稱。
@sp_qualifier為 sysname,預設值為 NULL。 各種 DBMS 產品支援表格的三部分命名形式 <qualifier>.<schema>.<name>。 在 SQL Server 中, @sp_qualifier 代表資料庫名稱。 在某些產品中,它代表數據表之資料庫環境的伺服器名稱。
[ @fUsePattern = ] fUsePattern
判斷底線 ()、百分比_ (%) 或括弧 ([和]) 是否解譯為通配符。
@fUsePattern為 bit,預設值為 1。
-
0= 模式比對已關閉。 -
1= 模式比對已開啟。
傳回碼值
無。
結果集
| 資料行名稱 | 資料類型 | 描述 |
|---|---|---|
PROCEDURE_QUALIFIER |
sysname | 程式限定元名稱。 這個資料列可以是 NULL。 |
PROCEDURE_OWNER |
sysname | 程式擁有者名稱。 這個資料行一律會傳回值。 |
PROCEDURE_NAME |
nvarchar(134) | 程式名稱。 這個資料行一律會傳回值。 |
NUM_INPUT_PARAMS |
int | 保留供未來使用。 |
NUM_OUTPUT_PARAMS |
int | 保留供未來使用。 |
NUM_RESULT_SETS |
int | 保留供未來使用。 |
REMARKS |
varchar(254) | 程式的描述。 SQL Server 不會傳回此數據行的值。 |
PROCEDURE_TYPE |
smallint | 程序類型。 SQL Server 一律會傳回 2.0。 這個值可以是下列其中一個選項: 0 = SQL_PT_UNKNOWN1 = SQL_PT_PROCEDURE2 = SQL_PT_FUNCTION |
備註
為了達到最大互操作性,閘道客戶端應該只假設 SQL 標準模式比對,也就是百分比 (%) 和底線 (_) 通配符。
對於目前使用者執行特定預存程式的許可權資訊不一定會檢查;因此,不保證存取。 只會使用三部分命名。 這表示只有本機預存程式,而不是遠端預存程式(需要四部分命名),會在針對 SQL Server 執行它們時傳回。 如果 伺服器屬性 ACCESSIBLE_SPROC 在 的結果集中 sp_server_info為 Y,則只會傳回目前使用者可執行的預存程式。
sp_stored_procedures 相當於 SQLProcedures ODBC 中的 。 傳回的結果會依 PROCEDURE_QUALIFIER、 PROCEDURE_OWNER和 PROCEDURE_NAME排序。
權限
SELECT需要架構的許可權。
範例
A. 傳回目前資料庫中的所有預存程式
以下範例回傳 AdventureWorks2025 資料庫中的所有儲存程序。
USE AdventureWorks2022;
GO
EXECUTE sp_stored_procedures;
B. 傳回單一預存程式
下列範例會傳 uspLogError 回預存程序的結果集。
USE AdventureWorks2022;
GO
EXECUTE sp_stored_procedures N'uspLogError', N'dbo', N'AdventureWorks2022', 1;