Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 12.0.1 » SQL Anywhere サーバー プログラミング » Embedded SQL » 長い値の送信と取り出し

 

LONG データの送信

この項では、Embedded SQL アプリケーションからデータベースに LONG 値を送信する方法について説明します。

手順は、静的 SQL と動的 SQL のどちらを使用するかに応じて異なります。

 ♦ LONG 値の送信 (静的 SQL の場合)
  1. 必要に応じて、DECL_LONGVARCHAR、DECL_LONGNVARCHAR、または DECL_LONGBINARY 型のホスト変数を宣言します。

  2. NULL を送信する場合は、インジケーター変数を負の値に設定します。

  3. ホスト変数構造体の stored_len フィールドを、array フィールド内のデータのバイト数に設定します。

  4. カーソルを開くか、文を実行して、データを送信します。

次のコードフラグメントは、静的 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;
}
 ♦ LONG 値の送信 (動的 SQL の場合)
  1. sqltype フィールドを必要に応じて DT_LONGVARCHAR、DT_LONGNVARCHAR、または DT_LONGBINARY に設定します。

  2. NULL を送信する場合は、* sqlind を負の値に設定します。

  3. NULL 値を送信しない場合は、sqldata フィールドを LONGVARCHAR、LONGNVARCHAR、LONGBINARY ホスト変数構造体を指すように設定します。

    LONGVARCHARSIZE(n)、LONGNVARCHARSIZE(n)、または LONGBINARYSIZE(n) マクロを使用して、array フィールドに n バイトのデータを保持するために割り付ける合計バイト数を決定できます。

  4. ホスト変数構造体の array_len フィールドを、array フィールドに割り付けるバイト数に設定します。

  5. ホスト変数構造体の stored_len フィールドを、array フィールド内のデータのバイト数に設定します。このバイト数は array_len 以下にしてください。

  6. カーソルを開くか、文を実行して、データを送信します。

 参照