sp_prepare (Transact SQL)
適用於:SQL Server Azure SQL 受控執行個體 Azure Synapse Analytics Analytics Platform System (PDW)
準備參數化的 Transact-SQL 語句,並傳回語句 句柄 以供執行。 sp_prepare
是在表格式資料流 (TDS) 封包中指定 ID = 11
來叫用。
語法
sp_prepare
handle OUTPUT
, params
, stmt
, options
[ ; ]
引數
控制代碼
SQL Server 產生的 備妥句柄 標識碼。 handle 是具有 int 傳回值的必要參數。
params
識別參數化語句。 params 是呼叫 ntext、nchar 或 nvarchar 輸入值的必要 OUTPUT 參數。 變數的參數定義會取代 語句中的參數標記。 如果未參數化語句,則輸入 NULL
值。
stmt
定義數據指標結果集。 stmt 參數是必要的,而且會呼叫 ntext、nchar 或 nvarchar 輸入值。
options
選擇性參數,會傳回數據指標結果集數據行的描述。 選項 需要下列輸入值:
值 | Description |
---|---|
0x0001 |
RETURN_METADATA |
範例
A. 準備和執行語句
下列範例會準備和執行基本的 Transact-SQL 語句。
DECLARE @handle INT;
EXEC sp_prepare @handle OUTPUT,
N'@P1 NVARCHAR(128), @P2 NVARCHAR(100)',
N'SELECT database_id, name FROM sys.databases WHERE name=@P1 AND state_desc = @P2';
EXEC sp_execute @handle,
N'tempdb',
N'ONLINE';
EXEC sp_unprepare @handle;
B. 使用句柄準備和執行語句
下列範例會準備 資料庫中的 AdventureWorks2022
語句,稍後再使用 句柄執行。
-- Prepare query
DECLARE @handle INT;
EXEC sp_prepare @handle OUTPUT,
N'@Param INT',
N'SELECT *
FROM Sales.SalesOrderDetail AS sod
INNER JOIN Production.Product AS p ON sod.ProductID = p.ProductID
WHERE SalesOrderID = @Param
ORDER BY Style DESC;';
-- Return handle for calling application
SELECT @handle;
GO
結果集如下所示。
1
使用句柄值 1
執行查詢兩次,再捨棄備妥的計劃。
EXEC sp_execute 1, 49879;
GO
EXEC sp_execute 1, 48766;
GO
EXEC sp_unprepare 1;
GO