次の方法で共有


sp_cursorprepexec (Transact-SQL)

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

送信されたカーソル ステートメントまたはバッチのプランをコンパイルし、カーソルを作成して設定します。 sp_cursorprepexec は、 sp_cursorpreparesp_cursorexecuteの機能を組み合わせたものになります。 このプロシージャは、表形式データ ストリーム (TDS) パケットの ID = 5 を指定することによって呼び出されます。

Transact-SQL 構文表記規則

構文

sp_cursorprepexec prepared handle OUTPUT , cursor OUTPUT , params , statement , options
    [ , scrollopt [ , ccopt [ , rowcount ] ] ]
    [ , '@parameter_name [ , ...n ]' ]

引数

準備されたハンドル

SQL Server によって生成された 準備されたハンドル 識別子。 prepared handle は必須であり、 int を返します。

cursor

SQL Server によって生成された cursor 識別子。 cursor は、このカーソルに作用するすべての後続のプロシージャー (例: sp_cursorfetch) で指定する必要がある必須パラメーターです。

params

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

Note

statementがパラメーター化され、scrollopt値が ON の場合は、入力値として ntext PARAMETERIZED_STMT 文字列を使用します。

statement

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

Note

statement値を指定する規則は、sp_cursoropenの場合と同じですが、statement文字列データ型は ntext にする必要があります。

options

カーソル結果セット列の説明を返す省略可能なパラメーター。 options には次の int 入力値が必要です。

Value 説明
0x0001 RETURN_METADATA

scrollopt

スクロール オプションです。 scrollopt は、次のいずれかの int 入力値を必要とする省略可能なパラメーターです。

Value 説明
0x0001 KEYSET
0x0002 DYNAMIC
0x0004 FORWARD_ONLY
0x0008 STATIC
0x10 FAST_FORWARD
0x1000 PARAMETERIZED_STMT
0x2000 AUTO_FETCH
0x4000 AUTO_CLOSE
0x8000 CHECK_ACCEPTED_TYPES
0x10000 KEYSET_ACCEPTABLE
0x20000 DYNAMIC_ACCEPTABLE
0x40000 FORWARD_ONLY_ACCEPTABLE
0x80000 STATIC_ACCEPTABLE
0x100000 FAST_FORWARD_ACCEPTABLE

要求されたオプションが、 statement によって定義されたカーソルに適していない可能性があるため、このパラメーターは入力と出力の両方として機能します。 このような場合、SQL Server は適切な型を割り当て、この値を変更します。

ccopt

コンカレンシー制御オプション。 ccopt は、次のいずれかの int 入力値を必要とする省略可能なパラメーターです。

Value 説明
0x0001 READ_ONLY
0x0002 SCROLL_LOCKS (以前の LOCKCC)
0x0004 オプティミスティック (旧称 OPTCC)
0x0008 オプティミスティック (旧称 OPTCCVAL)
0x2000 ALLOW_DIRECT
0x4000 UPDT_IN_PLACE
0x8000 CHECK_ACCEPTED_OPTS
0x10000 READ_ONLY_ACCEPTABLE
0x20000 SCROLL_LOCKS_ACCEPTABLE
0x40000 OPTIMISTIC_ACCEPTABLE
0x80000 OPTIMISITC_ACCEPTABLE

scrolloptと同様に、SQL Server は要求された値とは異なる値を割り当てることができます。

rowcount

AUTO_FETCHで使用するフェッチ バッファー行の数を示す省略可能なパラメーター。 既定値は 20 行です。 rowcount は、入力値と戻り値として割り当てられた場合の動作が異なります。

入力値として 戻り値として
FAST_FORWARDカーソル rowcount でAUTO_FETCHが指定されている場合 はフェッチ バッファーに配置する行数を表します。 結果セット内の行数を表します。 scrollopt AUTO_FETCH値を指定すると、rowcountはフェッチ バッファーにフェッチされた行数を返します。

parameter_name

params 引数で定義されている 1 つ以上のパラメーター名を指定します。 paramsに含まれるすべてのパラメーターにパラメーターを指定する必要があります。 この引数は、transact-SQL ステートメントまたは params 内のバッチ にパラメーターが定義されていない場合は必要ありません。

リターン コードの値

paramsが NULL 値を返す場合、ステートメントはパラメーター化されません。

この例では、 sp_cursorprepexecの使用方法を示します。 AdventureWorks2022 データベース内のPerson テーブルに対してクエリが実行され、名が "Katherine" であるすべてのレコードが返されます。

USE AdventureWorks2022;
GO

DECLARE @prep_handle INT,
    @cursor INT,
    @scrollopt INT = 4104,
    @ccopt INT = 8193,
    @rowcnt INT;

EXEC sp_cursorprepexec
    @prep_handle OUTPUT,
    @cursor OUTPUT,
    N'@fName nvarchar(100)',
    N'SELECT FirstName, LastName FROM Person.Person WHERE FirstName = @fName',
    @scrollopt,
    @ccopt,
    @rowcnt OUTPUT,
    'Katherine';

EXEC sp_cursorfetch @cursor;