分享方式:


sp_stored_procedures (Transact-SQL)

適用於:SQL ServerAzure SQL 資料庫 Azure SQL 受控執行個體

傳回目前環境中的預存程序清單。

Transact-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_UNKNOWN
1 = SQL_PT_PROCEDURE
2 = SQL_PT_FUNCTION

備註

為了達到最大互操作性,閘道客戶端應該只假設 SQL 標準模式比對,也就是百分比 (%) 和底線 (_) 通配符。

對於目前使用者執行特定預存程式的許可權資訊不一定會檢查;因此,不保證存取。 只會使用三部分命名。 這表示只有本機預存程式,而不是遠端預存程式(需要四部分命名),會在針對 SQL Server 執行它們時傳回。 如果 伺服器屬性 ACCESSIBLE_SPROC 在 的結果集中 sp_server_info為 Y,則只會傳回目前使用者可執行的預存程式。

sp_stored_procedures 相當於 SQLProcedures ODBC 中的 。 傳回的結果會依 PROCEDURE_QUALIFIERPROCEDURE_OWNERPROCEDURE_NAME排序。

權限

SELECT需要架構的許可權。

範例

A. 傳回目前資料庫中的所有預存程式

下列範例會傳回 AdventureWorks2022 資料庫中的所有預存程式。

USE AdventureWorks2022;
GO
EXEC sp_stored_procedures;

B. 傳回單一預存程式

下列範例會傳 uspLogError 回預存程序的結果集。

USE AdventureWorks2022;
GO

sp_stored_procedures N'uspLogError',
    N'dbo',
    N'AdventureWorks2022',
    1;