この文は、カーソルの現在のローの 1 つのカラムに対する文字列またはバイナリ・データを取得するために使用します。GET DATA を使って、LONG BINARY または LONG VARCHAR フィールドをフェッチします。SET 文を参照してください。
GET DATA cursor-name COLUMN column-num OFFSET start-offset [ WITH TEXTPTR ] USING DESCRIPTOR sqlda-name | INTO hostvar, ...
cursor-name : identifier, または hostvar
column-num : integer または hostvar
start-offset : integer または hostvar
sqlda-name : identifier
COLUMN 句 column-num の値は 1 から始まり、どのカラムのデータがフェッチされるかを示します。そのカラムは、文字列型またはバイナリ型で指定します。
OFFSET 句 start-offset は、フィールド値の中でスキップされるバイト数を示します。通常、これは、以前にフェッチされたバイトの数です。この GET DATA 文に対してフェッチされるバイト数は、ターゲットのホスト変数の長さによって決定されます。
ターゲットのホスト変数のインジケータ値は単精度整数です。このため、インジケータ値にはトランケートされたバイト数が入るとはかぎりません。代わりに、フィールドに NULL 値がある場合は負の値が入り、値がトランケートされた場合は (トランケートされたバイトの数とはかぎりません) 正の値が入ります。また、NULL 値以外の値がトランケートされない場合は、0 が入ります。
また、LONG VARCHAR または LONG VARCHAR ホスト変数で 0 より大きいオフセットを使用すると、untrunc_len フィールドにはトランケート前のサイズが正確に示されません。
WITH TEXTPTR 句 WITH TEXTPTR 句がある場合、テキスト・ポインタが SQLDA の第 2 ホスト変数または SQLDA の第 2 フィールドに取り出されます。このテキスト・ポインタは、Transact-SQL READ TEXT と WRITE TEXT 文と一緒に使えます。テキスト・ポインタは 16 ビットのバイナリ値で、次のように宣言できます。
DECL_BINARY( 16 ) textptr_var; |
WITH TEXTPTR 句は、長いデータ型 (LONG BINARY、LONG VARCHAR、TEXT、IMAGE) でのみ使用できます。それ以外のデータ型で使用すると、エラー INVALID_TEXTPTR_VALUE が返されます。
データの合計の長さが、SQLCA 構造体の SQLCOUNT フィールドに返されます。
現在のカーソルの位置でローから 1 つのカラム値を取得します。カーソルを開き、FETCH を使ってローに配置しておいてください。
なし
なし
SQL/2003 ベンダ拡張。
次の例は、GET DATA を使用してバイナリの大規模なオブジェクト (BLOB とも呼ばれます) をフェッチします。
EXEC SQL BEGIN DECLARE SECTION; DECL_BINARY(1000) piece; short ind; EXEC SQL END DECLARE SECTION; int size; /* Open a cursor on a long varchar field */ EXEC SQL DECLARE big_cursor CURSOR FOR SELECT long_data FROM some_table WHERE key_id = 2; EXEC SQL OPEN big_cursor; EXEC SQL FETCH big_cursor INTO :piece; for( offset = 0; ; offset += piece.len ) { EXEC SQL GET DATA big_cursor COLUMN 1 OFFSET :offset INTO :piece:ind; /* Done if the NULL value */ if( ind < 0 ) break; write_out_piece( piece ); /* Done when the piece was not truncated */ if( ind == 0 ) break; } EXEC SQL CLOSE big_cursor; |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |