次の方法で共有


sp_prepare (Transact SQL)

適用対象: SQL Server Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)

パラメーター化された Transact-SQL ステートメントを準備し、実行のためにステートメント handle を返します。 sp_prepare は、表形式データ ストリーム (TDS) パケットで ID = 11 を指定することによって呼び出されます。

Transact-SQL 構文表記規則

構文

sp_prepare
    handle OUTPUT
    , params
    , stmt
    , options
[ ; ]

引数

ハンドル

SQL Server によって生成された 準備されたハンドル 識別子。 handle は、 int 戻り値を持つ必須のパラメーターです。

params

パラメーター化されたステートメントを指定します。 params は、 ntextnchar、または nvarchar 入力値を呼び出す必須の OUTPUT パラメーターです。 パラメーター変数の定義は、ステートメント内のパラメーター マーカーに置き換えます。 ステートメントがパラメーター化されていない場合は、 NULL 値を入力します。

stmt

カーソル結果セットを定義します。 stmt パラメーターが必要であり、ntextnchar、または nvarchar 入力値を呼び出します。

options

カーソル結果セット列の説明を返す省略可能なパラメーター。 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