sp_stored_procedures (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_QUALIFIER、PROCEDURE_OWNER 和 PROCEDURE_NAME 來排序。
權限
需要結構描述的 SELECT 權限。
範例
A.傳回目前資料庫中的所有預存程序
下列範例會傳回 AdventureWorks 資料庫中的所有預存程序。
USE AdventureWorks2012;
GO
EXECUTE sp_stored_procedures;
B.傳回單一預存程序
下列範例會傳回 uspLogError 預存程序的結果集。
USE AdventureWorks2012;
GO
EXECUTE sp_stored_procedures N'uspLogError', N'dbo', N'AdventureWorks2012', 1;