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 » SQLCA (SQL Communication Area)

 

SQLCA のフィールド

SQLCA のフィールドの意味を次に示します。

  • sqlcaid   SQLCA 構造体の ID として文字列 SQLCA が格納される 8 バイトの文字フィールド。このフィールドはデバッグ時にメモリの中身を見るときに役立ちます。

  • sqlcabc   long integer。SQLCA 構造体の長さ (136 バイト) が入ります。

  • sqlcode   long integer。データベースが検出した要求エラーのエラー・コードが入ります。エラー・コードの定義はヘッダ・ファイル sqlerr.h にあります。エラー・コードは、0 (ゼロ) は成功、正は警告、負はエラーを示します。

    エラー・コードの一覧については、エラー・メッセージを参照してください。

  • sqlerrml   sqlerrmc フィールドの情報の長さ。

  • sqlerrmc   エラー・メッセージに挿入される文字列。挿入されない場合もあります。エラー・メッセージに 1 つまたは複数のプレースホルダ文字列 (%1%2、...) があると、このフィールドの文字列と置換されます。

    たとえば、「テーブルが見つかりません」のエラーが発生した場合、sqlerrmc にはテーブル名が入り、これがエラー・メッセージの適切な場所に挿入されます。

    エラー・メッセージの一覧については、エラー・メッセージを参照してください。

  • sqlerrp   予約。

  • sqlerrd   long integer の汎用配列。

  • sqlwarn   予約。

  • sqlstate   SQLSTATE ステータス値。ANSI SQL 標準では、SQLCODE 値のほかに、SQL 文からのこの型の戻り値が定義されます。SQLSTATE 値は NULL で終了する長さ 5 の文字列で、前半 2 バイトがクラス、後半 3 バイトがサブクラスを表します。各バイトは 0 ~ 9 の数字、または、A ~ Z の英大文字です。

    0 ~ 4 または A ~ H の文字で始まるクラス、サブクラスはすべて SQL 標準で定義されています。それ以外のクラスとサブクラスは実装依存です。SQLSTATE 値 '00000' はエラーや警告がなかったことを意味します。

    SQLSTATE 値の詳細については、SQL Anywhere のエラー・メッセージ (SQLSTATE 順)を参照してください。

sqlerror 配列

sqlerror フィールドの配列要素を次に示します。

  • sqlerrd[1] (SQLIOCOUNT)   文を完了するために必要とされた入出力操作の実際の回数。

    データベース・サーバによって、文の実行ごとにこの値が 0 にリセットされることはありません。一連の文を実行する前にこの変数が 0 にリセットされるようにプログラムすることもできます。最後の文が実行された後、この値は一連の文の入出力操作の合計回数になります。

  • sqlerrd[2] (SQLCOUNT)   このフィールドの値の意味は実行中の文によって変わります。

    • INSERT、UPDATE、PUT、DELETE 文   文によって影響を受けたローの数。

    • OPEN 文   カーソルを開いたとき、このフィールドには、カーソル内の実際のロー数 (0 以上の値)、または、その推定値 (負の数で、その絶対値が推定値) が入ります。データベース・サーバによって計算されたローの数は、ローの実際の数です。ローを数える必要はありません。row_counts オプションを使って、常にローの実際の数を返すようにデータベースを設定することもできます。

    • FETCH カーソル文   SQLCOUNT フィールドは、警告 SQLE_NOTFOUND が返った場合に設定されます。このフィールドには、FETCH RELATIVE または FETCH ABSOLUTE 文によって、カーソル位置の可能な範囲を超えたローの数が入ります (カーソルは、ローの上にも、最初のローより前または最後のローより後にも置くことができます)。ワイド・フェッチの場合、SQLCOUNT は実際にフェッチされたローの数であり、要求されたローの数と同じかそれより少なくなります。ワイド・フェッチ中に SQLE_NOTFOUND が設定されるのは、ローがまったく返されなかった場合のみです。

      ワイド・フェッチの詳細については、一度に複数のローをフェッチするを参照してください。

      ローが見つからなくても位置が有効な場合は、値は 0 です。たとえば、カーソル位置が最後のローのときに FETCH RELATIVE 1 を実行した場合です。カーソルの最後を超えてフェッチしようとした場合、値は正の数です。カーソルの先頭を超えてフェッチしようとした場合、値は負の数です。

    • GET DATA 文   SQLCOUNT フィールドには値の実際の長さが入っています。

    • DESCRIBE 文   WITH VARIABLE RESULT 句を使用して、複数の結果セットを返す可能性のあるプロシージャを記述すると、SQLCOUNT は次のいずれかの値に設定されます。

      • 0   結果セットは変更される場合があります。各 OPEN 文の後でプロシージャ呼び出しを再度記述してください。

      • 1   結果セットは固定です。再度記述する必要はありません。

      構文エラーの SQLE_SYNTAX_ERROR の場合、このフィールドには文内のおおよそのエラー検出位置が入ります。

  • sqlerrd[3] (SQLIOESTIMATE)   文の完了に必要な入出力操作の推定回数。このフィールドは OPEN 文または EXPLAIN 文によって値が設定されます。