共用方式為


sys.fn_stmt_sql_handle_from_sql_stmt (Transact-SQL)

適用於: SQL Server 2016 (13.x) 及以後版本 Azure SQL Database AzureSQL Managed InstanceSQL database in Microsoft Fabric

取得 stmt_sql_handle 指定參數化類型 (簡單或強制) 下的 for Transact-SQL 陳述式。 當您知道查詢存放區的文字時,您可以使用其 stmt_sql_handle 來參考儲存在查詢存放區中的查詢。

Transact-SQL 語法慣例

語法

sys.fn_stmt_sql_handle_from_sql_stmt
(
    N'query_sql_text'
    , [ query_param_type ]
)
[ ; ]

引數

query_sql_text

查詢存放區中您想要控制碼的查詢文字。 query_sql_textnvarchar(max), 沒有預設值。

query_param_type

查詢的參數類型。 query_param_typetinyint,預設值為 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;