sp_cursorprepexec (Transact-SQL)
適用対象: SQL Server Azure SQL Database Azure Synapse Analytics Analytics Platform System (PDW)
送信されたカーソル ステートメントまたはバッチのプランをコンパイルし、カーソルを作成して設定します。 sp_cursorprepexec
は、 sp_cursorprepare
と sp_cursorexecute
の機能を組み合わせたものになります。 このプロシージャは、表形式データ ストリーム (TDS) パケットの ID = 5
を指定することによって呼び出されます。
構文
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 は、 ntext、 nchar、または nvarchar 入力値を呼び出す必須のパラメーターです。
Note
statementがパラメーター化され、scrollopt値が ON の場合は、入力値として ntext PARAMETERIZED_STMT 文字列を使用します。
statement
カーソル結果セットを定義します。 statement パラメーターが必要であり、ntext、nchar、または 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;