SQLCA のフィールドの意味を次に示します。
sqlcaid SQLCA 構造体の ID として文字列 SQLCA が格納される 8 バイトの文字フィールド。このフィールドはデバッグ時にメモリの中身を見るときに役立ちます。
sqlcode long integer。データベースが検出した要求エラーのエラー・コードが入ります。エラー・コードの定義はヘッダ・ファイル sqlerr.h にあります。エラー・コードは、0 (ゼロ) は成功、正は警告、負はエラーを示します。
エラー・コードの一覧については、エラー・メッセージを参照してください。
sqlerrmc エラー・メッセージに挿入される文字列。挿入されない場合もあります。エラー・メッセージに 1 つまたは複数のプレースホルダ文字列 (%1、%2、...) があると、このフィールドの文字列と置換されます。
たとえば、「テーブルが見つかりません
」のエラーが発生した場合、sqlerrmc にはテーブル名が入り、これがエラー・メッセージの適切な場所に挿入されます。
エラー・メッセージの一覧については、エラー・メッセージを参照してください。
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 フィールドの配列要素を次に示します。
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 文によって値が設定されます。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |