sys.fn_stmt_sql_handle_from_sql_stmt (Transact-SQL)
適用於:SQL Server 2016 (13.x) 和更新版本 Azure SQL 資料庫 Azure SQL 受控執行個體
取得指定參數化類型下 Transact-SQL 語句的stmt_sql_handle(簡單或強制)。 這可讓您在知道其文字時,使用stmt_sql_handle來參考儲存在 查詢存放區 中的查詢。
語法
sys.fn_stmt_sql_handle_from_sql_stmt
(
'query_sql_text' ,
[ query_param_type
) [;]
引數
query_sql_text
這是您想要處理之查詢存放區中的查詢文字。 query_sql_text是 nvarchar(max),沒有預設值。
query_param_type
這是查詢的參數類型。 query_param_type是一個tinyint。 可能的值包括:
NULL - 預設值為 0
0 - None
1 - 使用者
2 - 簡單
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
JOIN sys.query_store_query AS q
ON qt.query_text_id = q.query_id
CROSS APPLY sys.fn_stmt_sql_handle_from_sql_stmt (qt.query_sql_text, null) AS fn_handle_from_stmt
JOIN sys.dm_exec_query_stats AS qs
ON fn_handle_from_stmt.statement_sql_handle = qs.statement_sql_handle;