適用於: SQL Server 2016 (13.x) 及以後版本
Azure SQL Database Azure
SQL Managed Instance
SQL database in Microsoft Fabric
取得 stmt_sql_handle 指定參數化類型 (簡單或強制) 下的 for Transact-SQL 陳述式。 當您知道查詢存放區的文字時,您可以使用其 stmt_sql_handle 來參考儲存在查詢存放區中的查詢。
語法
sys.fn_stmt_sql_handle_from_sql_stmt
(
N'query_sql_text'
, [ query_param_type ]
)
[ ; ]
引數
query_sql_text
查詢存放區中您想要控制碼的查詢文字。 query_sql_text 是 nvarchar(max), 沒有預設值。
query_param_type
查詢的參數類型。
query_param_type 是 tinyint,預設值為 NULL。 可能的值包括:
| 價值觀 | 描述 |
|---|---|
NULL (預設值) |
預設為 0 |
| 0 | None |
| 1 | User |
| 2 | Simple |
| 3 | 強迫 |
傳回的資料行
下表列出傳回的數據 sys.fn_stmt_sql_handle_from_sql_stmt 行。
| 資料行名稱 | 類型 | 描述 |
|---|---|---|
statement_sql_handle |
varbinary(64) | SQL 句柄。 |
query_sql_text |
nvarchar(max) | Transact-SQL 語句的文字。 |
query_parameterization_type |
tinyint | 查詢參數化類型。 |
傳回碼值
0 (成功) 或 1 (失敗)。
權限
需要 EXECUTE 資料庫的許可權,以及 DELETE 查詢存放區目錄檢視的許可權。
範例
下列範例會執行 語句,然後使用 sys.fn_stmt_sql_handle_from_sql_stmt 傳回該語句的 SQL 句柄。
SELECT *
FROM sys.databases;
SELECT *
FROM sys.fn_stmt_sql_handle_from_sql_stmt('SELECT * FROM sys.databases', NULL);
使用函式將 查詢存放區 數據與其他動態管理檢視相互關聯。 下列範例將:
SELECT qt.query_text_id,
q.query_id,
qt.query_sql_text,
qt.statement_sql_handle,
q.context_settings_id,
qs.statement_context_id
FROM sys.query_store_query_text AS qt
INNER JOIN sys.query_store_query AS q
ON qt.query_text_id = q.query_text_id
CROSS APPLY sys.fn_stmt_sql_handle_from_sql_stmt(qt.query_sql_text, NULL) AS fn_handle_from_stmt
INNER JOIN sys.dm_exec_query_stats AS qs
ON fn_handle_from_stmt.statement_sql_handle = qs.statement_sql_handle;