この項では、Embedded SQL アプリケーションからデータベースに LONG 値を送信する方法について説明します。詳細については、長い値の送信と取り出しを参照してください。
手順は、静的 SQL と動的 SQL のどちらを使用するかに応じて異なります。
必要に応じて、DECL_LONGVARCHAR、DECL_LONGNVARCHAR、または DECL_LONGBINARY 型のホスト変数を宣言します。
NULL を送信する場合は、インジケータ変数を負の値に設定します。
詳細については、インジケータ変数を参照してください。
ホスト変数構造体の stored_len フィールドを、array フィールド内のデータのバイト数に設定します。
カーソルを開くか、文を実行して、データを送信します。
次のコード・フラグメントは、静的 Embedded SQL を使用して LONG VARCHAR データを送信するメカニズムを示しています。実際のアプリケーションではありません。
#define DATA_LEN 12800 EXEC SQL BEGIN DECLARE SECTION; // SQLPP initializes longdata.array_len DECL_LONGVARCHAR(128000) longdata; EXEC SQL END DECLARE SECTION; void set_test_var() { // init longdata for sending data memset( longdata.array, 'a', DATA_LEN ); longdata.stored_len = DATA_LEN; printf( "Setting test_var to %d a's\n", DATA_LEN ); EXEC SQL SET test_var = :longdata; } |
sqltype フィールドを必要に応じて DT_LONGVARCHAR、DT_LONGNVARCHAR、または DT_LONGBINARY に設定します。
NULL を送信する場合は、* sqlind を負の値に設定します。
NULL 値を送信しない場合は、sqldata フィールドを LONGVARCHAR、LONGNVARCHAR、LONGBINARY ホスト変数構造体を指すように設定します。
LONGVARCHARSIZE(n)、LONGNVARCHARSIZE(n)、または LONGBINARYSIZE(n) マクロを使用して、array フィールドに n バイトのデータを保持するために割り付ける合計バイト数を決定できます。
ホスト変数構造体の array_len フィールドを、array フィールドに割り付けるバイト数に設定します。
ホスト変数構造体の stored_len フィールドを、array フィールド内のデータのバイト数に設定します。このバイト数は array_len 以下にしてください。
カーソルを開くか、文を実行して、データを送信します。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |