sp_prepare (Transact SQL)
適用対象:SQL ServerAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics 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
カーソル結果セット列の説明を返す省略可能なパラメーター。 オプション には、次の入力値が必要です。
Value | 説明 |
---|---|
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
を使用してクエリを 2 回実行します。
EXEC sp_execute 1, 49879;
GO
EXEC sp_execute 1, 48766;
GO
EXEC sp_unprepare 1;
GO
関連するコンテンツ
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示