sp_cursorprepare (Transact-SQL)
適用対象:SQL Server
カーソル ステートメントまたはバッチをコンパイルして実行プランを作成します。カーソルは作成しません。 コンパイルされたステートメントは、後で sp_cursorexecute で使用できます。 この手順は、sp_cursorexecuteと組み合わせて、sp_cursoropenと同じ機能を持ちますが、2 つのフェーズに分割されます。 sp_cursorprepareは、表形式データ ストリーム (TDS) パケットで ID = 3 を指定して呼び出されます。
構文
sp_cursorprepare prepared_handle OUTPUT , params , stmt , options
[ , scrollopt [ , ccopt ] ]
[ ; ]
引数
prepared_handle
整数値を返すSQL Server生成された準備済みハンドル識別子。
注意
その後、カーソル を開くために、prepared_handleがsp_cursorexecuteプロシージャに渡されます。 作成されたハンドルは、ログオフするか sp_cursorunprepare プロシージャを使用して明示的に削除するまで存在します。
params
パラメーター化されたステートメントを指定します。 変数の パラメーター 定義は、 ステートメントのパラメーター マーカーに置き換えられます。 params は、ntext、nchar、または nvarchar の入力値を呼び出す必須パラメーターです。 ステートメントがパラメーター化されていない場合は、NULL 値を入力します。
注意
stmt がパラメーター化され、scrollopt PARAMETERIZED_STMT値が ON の場合は、入力値として ntext 文字列を使用します。
Stmt
カーソル結果セットを定義します。 stmt パラメーターは必須であり、ntext、nchar、または nvarchar の入力値を呼び出します。
注意
stmt 値を指定する規則は、sp_cursoropenの場合と同じですが、stmt 文字列データ型は ntext である必要があります。
options
カーソル結果セット列の説明を返す省略可能なパラメーター。 オプション には、次の int 入力値が必要です。
値 | 説明 |
---|---|
0x0001 | RETURN_METADATA |
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 |
要求された値は stmt によって定義されたカーソルに適していない可能性があるため、このパラメーターは入力と出力の両方として機能します。 このような場合は、SQL Server によって適切な値が割り当てられます。
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 |
scrollpt と同様に、SQL Serverは要求されたものとは異なる値を割り当てることができます。
注釈
RPC 状態パラメーターは、次のいずれかです。
値 | 説明 |
---|---|
0 | 成功 |
0x0001 | 障害 |
1FF6 | メタデータを返できませんでした。 注: その理由は、 ステートメントで結果セットが生成されないことです。たとえば、INSERT または DDL ステートメントです。 |
例
sp_cursorprepareとsp_cursorexecuteを使用する例を次に示します。
declare @handle int , @p5 int, @p6 int
exec sp_cursorprepare @handle OUTPUT,
N'@dbid int',
N'select * from sys.databases where database_id < @dbid',
1,
@p5 output,
@p6 output
declare @p1 int
set @P1 = @handle
declare @p2 int
declare @p3 int
declare @p4 int
set @P6 = 4
exec sp_cursorexecute @p1, @p2 OUTPUT, @p3 output , @p4 output, @p5 OUTPUT, @p6
exec sp_cursorfetch @P2
exec sp_cursorunprepare @handle
exec sp_cursorclose @p2
stmt がパラメーター化され、scrollopt PARAMETERIZED_STMT値が ON の場合、文字列の形式は次のようになります。
{ <ローカル変数名>**<データ型> } [ ,...n ]
参照
sp_cursorexecute (Transact-SQL)
sp_cursoropen (Transact-SQL)
sp_cursorunprepare (Transact-SQL)
システム ストアド プロシージャ (Transact-SQL)
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示