sp_tables (Transact-SQL)
傳回目前環境中所能查詢的物件清單。這表示可出現在 FROM 子句中的任何物件,但同義字物件除外。
[!附註]
若要判斷同義字基底物件的名稱,請查詢 sys.synonyms 目錄檢視。
語法
sp_tables [ [ @table_name = ] 'name' ]
[ , [ @table_owner = ] 'owner' ]
[ , [ @table_qualifier = ] 'qualifier' ]
[ , [ @table_type = ] "type" ]
[ , [@fUsePattern = ] 'fUsePattern'];
引數
[ @table_name= ] 'name'
這是用來傳回目錄資訊的資料表。name 是 nvarchar(384),預設值是 NULL。支援萬用字元的模式比對。[ @table_owner= ] 'owner'
這是用來傳回目錄資訊之資料表的資料表擁有者。owner 是 nvarchar(384),預設值是 NULL。支援萬用字元的模式比對。如果未指定擁有者,就會套用基礎 DBMS 的預設資料表可見性規則。在 SQL Server 中,如果目前使用者擁有一份含指定名稱的資料表,就會傳回這份資料表的資料行。如果未指定擁有者,且目前使用者並未擁有指定名稱的資料表,這個程序就會查看資料庫擁有者所擁有之指定名稱的資料表。如果資料表存在,就會傳回這份資料表的資料行。
[ @table_qualifier= ] 'qualifier'
這是資料表限定詞的名稱。qualifier 是 sysname,預設值是 NULL。各種 DBMS 產品都支援三部分的資料表命名 (qualifier**.owner.**name)。在 SQL Server 中,這個資料行代表資料庫名稱。在某些產品中,它代表資料表之資料庫環境的伺服器名稱。[ , [ @table_type= ] "'type', 'type'" ]
這是一份值清單 (以逗號分隔),用來提供指定資料表類型之所有資料表的相關資訊。其中包括 TABLE、SYSTEMTABLE 和 VIEW。type 是 varchar(100),預設值是 NULL。[!附註]
每個資料表類型都必須用單引號括住,整個參數必須用雙引號括住。資料表類型必須是大寫。如果 SET QUOTED_IDENTIFIER 是 ON,每個單引號都必須變成兩個,整個參數必須用單引號括住。
[ @fUsePattern = ] 'fUsePattern'
判斷是否將底線 (_)、百分比 (%) 和方括號 ([ 或 ]) 字元解譯成萬用字元。有效值是 0 (關閉模式比對) 和 1 (開啟模式比對)。fUsePattern 是 bit,預設值是 1。
傳回碼值
無
結果集
資料行名稱 |
資料類型 |
描述 |
---|---|---|
TABLE_QUALIFIER |
sysname |
資料表限定詞名稱。在 SQL Server 中,這個資料行代表資料庫名稱。這個欄位可以是 NULL。 |
TABLE_OWNER |
sysname |
資料表擁有者名稱。在 SQL Server 中,這個資料行代表建立資料表的資料庫使用者名稱。這個欄位一律會傳回值。 |
TABLE_NAME |
sysname |
資料表名稱。這個欄位一律會傳回值。 |
TABLE_TYPE |
varchar(32) |
資料表、系統資料表或檢視。 |
REMARKS |
varchar(254) |
SQL Server 不會傳回這個資料行的值。 |
備註
若要有最大交互操作能力,閘道用戶端應該只採用 SQL-92 標準 SQL 模式比對 (% 和 _ 萬用字元)。
不一定會檢查目前使用者的特定資料表讀取或寫入權限的權限相關資訊。因此,存取權並無保證。這個結果集不只包括資料表和檢視,它也包括支援這些類型的 DBMS 產品的閘道同義字和別名。如果在 sp_server_info 的結果集中,伺服器屬性 ACCESSIBLE_TABLES 是 Y,便只會傳回目前使用者所能存取的資料表。
sp_tables 相當於 ODBC 中的 SQLTables。傳回的結果依 TABLE_TYPE、TABLE_QUALIFIER、TABLE_OWNER 和 TABLE_NAME 來排序。
權限
需要結構描述的 SELECT 權限。
範例
A. 傳回目前環境中所能查詢的物件清單
下列範例會傳回目前環境中所能查詢的物件清單。
EXEC sp_tables ;
B. 傳回 AdventureWorks 中之資料表的相關資訊
下列範例會傳回屬於 AdventureWorks 資料庫中的 Person 結構描述之資料表的相關資訊。
USE AdventureWorks;
GO
EXEC sp_tables
@table_name = '%',
@table_owner = 'Person',
@table_qualifier = 'AdventureWorks';