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

SQL Anywhere 11.0.1 (日本語) » SQL Anywhere サーバ - プログラミング » SQL Anywhere データ・アクセス API » 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. カーソルを開くか、文を実行して、データを送信します。