sp_cursorprepexec (Transact-SQL)

適用対象:SQL ServerAzure SQL DatabaseAzure Synapse AnalyticsAnalytics Platform System (PDW)

送信されたカーソル ステートメントまたはバッチのプランをコンパイルし、カーソルを作成して設定します。 sp_cursorprepexec の関数 sp_cursorprepare を結合します sp_cursorexecute。 この手順は、表形式データ ストリーム (TDS) パケットで指定 ID = 5 することによって呼び出されます。

Transact-SQL 構文表記規則

構文

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

引数

準備されたハンドル

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

cursor

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

params

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

Note

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

statement

カーソル結果セットを定義します。 ステートメント パラメーターは必須であり、ntext、ncharまたは nvarchar の入力値を呼び出します。

Note

ステートメント値を指定する規則は、ステートメント文字列のデータ型を ntext にする必要がある点を除き、使用する規則と同じですsp_cursoropen

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

要求されたオプションがステートメントによって定義されたカーソルに適していない可能性があるため、このパラメーターは入力と出力の両方として機能します。 このような場合、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 は要求された値とは異なる値を割り当てることができます。

行数

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

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

parameter_name

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

リターン コードの値

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

この例では、次の使用 sp_cursorprepexec例を示します。 データベース内のテーブルに対してクエリをPersonAdventureWorks2022実行し、名が "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;