対象者:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
アナリティクスプラットフォームシステム(PDW)
Microsoft FabricにおけるSQLデータベース
送信されたカーソル ステートメントまたはバッチのプランをコンパイルし、カーソルを作成して設定します。
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 によって生成された 準備されたハンドル 識別子。 準備されたハンドル パラメーターが必要であり、int を返します。
cursor
SQL Server によって生成された cursor 識別子。 カーソル パラメーターは、この カーソル に作用するすべての後続のプロシージャ (たとえば、 sp_cursorfetch) で指定する必要がある必須パラメーターです。
params
パラメーター化されたステートメントを指定します。 パラメーター変数の定義は、ステートメント内のパラメーター マーカーに置き換えます。 params パラメーターが必要です。 指定すると、パラメーターはntext、nchar、または nvarchar の入力値を呼び出します。
Note
statementがパラメーター化され、scrollopt値が ON の場合は、入力値として ntext PARAMETERIZED_STMT 文字列を使用します。
statement
カーソル結果セットを定義します。 statement パラメーターが必要であり、ntext、nchar、または nvarchar 入力値を呼び出します。
Note
ステートメント値を指定する規則は、sp_cursoropenと同じですが、ステートメント文字列のデータ型は ntext である必要があります。
options
カーソル結果セット列の説明を返す省略可能なパラメーター。 options パラメーターには、次の int 入力値が必要です。
| 値 | 説明 |
|---|---|
0x0001 |
RETURN_METADATA |
scrollopt
スクロール オプションです。 scrollopt パラメーターは省略可能です。 scrollopt を指定すると、次のいずれかの int 入力値が必要になります。
| 値 | 説明 |
|---|---|
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 パラメーターは省略可能です。 ccopt パラメーターを指定する場合、次のいずれかの int 入力値が必要です。
| 値 | 説明 |
|---|---|
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が指定されている場合 はフェッチ バッファーに配置する行数を表します。 | 結果セット内の行数を表します。
scrolloptAUTO_FETCH 値を指定すると、rowcount はフェッチ バッファーにフェッチされた行の数を返します。 |
parameter_name
params パラメーターで定義されている 1 つ以上のパラメーター名を指定します。 paramsに含まれるすべてのパラメーターにパラメーターを指定する必要があります。 パラメーター内の Transact-SQL ステートメントまたはバッチにパラメーターが定義されていない場合、このパラメーターは必要ありません。
リターン コードの値
パラメーター値がNULLを返す場合、ステートメントはパラメーター化されません。
例
この例では、 sp_cursorprepexecの使用方法を示します。
Person データベース内のAdventureWorks2025 テーブルに対してクエリが実行され、名が "Kirby" であるすべてのレコードが返されます。
USE AdventureWorks2022;
GO
DECLARE @prep_handle INT,
@cursor INT,
@scrollopt INT = 4104,
@ccopt INT = 8193,
@rowcnt INT;
EXECUTE 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,
'Kirby';
EXECUTE sp_cursorfetch @cursor;