共用方式為


sp_stored_procedures (Transact-SQL)

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

主題連結圖示Transact-SQL 語法慣例

語法

sp_stored_procedures [ [ @sp_name = ] 'name' ] 
    [ , [ @sp_owner = ] 'schema'] 
    [ , [ @sp_qualifier = ] 'qualifier' ]
    [ , [@fUsePattern = ] 'fUsePattern' ]

引數

  • [ @sp_name = ] 'name'
    這是用來傳回目錄資訊的程序名稱。name 是 nvarchar(390),預設值是 NULL。支援萬用字元的模式比對。

  • [ @sp_owner = ] 'schema'
    這是程序所屬的結構描述名稱。schema 是 nvarchar(384),預設值是 NULL。支援萬用字元的模式比對。如果未指定 owner,就會套用基礎 DBMS 的預設程序可見性規則。

    在 SQL Server 中,如果目前結構描述含有指定名稱的程序,就會傳回該程序。如果指定的是非限定的預存程序,則 Database Engine 會以下列順序搜尋該程序:

    • 目前資料庫的 sys 結構描述。

    • 如果在批次或動態 SQL 中執行,則為呼叫者的預設結構描述;或者,如果非限定程序名稱出現在另一個程序定義的內文裡面,接下來就會搜尋含有這個其他程序的結構描述。如需有關預設結構描述的詳細資訊,請參閱<使用者結構描述分隔>。

    • 目前資料庫中的 dbo 結構描述。

  • [ @qualifier = ] 'qualifier'
    這是程序限定詞的名稱。qualifier 是 sysname,預設值是 NULL。各種 DBMS 產品都支援三部分的資料表命名,格式為 qualifier**.schema.**name。在 SQL Server 中,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-92 標準模式比對 (百分比 (%) 和底線 (_) 萬用字元)。

不一定會檢查有關目前使用者特定預存程序執行權的權限資訊;因此,不保證一定能夠存取。請注意,它只接受三部分名稱。也就是說,當它們對 SQL Server 執行時,只會傳回本機預存程序 (而非採用四部分名稱的遠端預存程序)。如果在 sp_server_info 的結果集中,伺服器屬性 ACCESSIBLE_SPROC 是 Y,則只會傳回目前使用者可以執行的預存程序。

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

權限

需要結構描述的 SELECT 權限。

範例

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

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

USE AdventureWorks2008R2;
GO
EXECUTE sp_stored_procedures;

B. 傳回單一預存程序

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

USE AdventureWorks2008R2;
GO
EXECUTE sp_stored_procedures N'uspLogError', N'dbo', N'AdventureWorks2008R2', 1;