# CHAPTER 8: エラーメッセージ

## 8.1 スタテック SQL コンパイル時エラーメッセージ

以下は、スタテック SQL コンパイル時のエラーメッセージのリストとその簡単な説明です。

`Cannot build mx qualification`

  `WHERE` 句に指定されたコンテキストは構築することができません。

`Command line too long`

  SQL コマンドラインは、最大長 2048 文字を越えています。

`Cursor name limited to 128 characters`

  宣言されたカーソル名は、最大長 128 文字を越えています。

`Cursor was not declared`

  カーソルの宣言をせずにカーソルのオープンを試みました。

`Data type not supported by `FETCH INTO` statement`

  SQL プリコンパイラによってサポートされていない変数タイプを使用しました。

`Errors`

  プリコンパイラ中にエラーが発生しました。

`Invalid size for character variable`

  文字型変数(文字配列)は、14　桁以上のインデックスをともない宣言されました。

`Missing character variable length`

  インデックス値は、文字変数(配列)の宣言の範囲にはありません。

`Missing `EXEC SQL BEGIN DECLARE` section`

  `EXEC SQL BEGIN DECLARE SECTION`の前に `EXEC SQL END DECLARE SECTION`が見つかりました。

`Missing `EXEC SQL END DECLARE` section`

  プログラム内で`EXEC SQL BEGIN DECLARE SECTION`に対応する `EXEC SQL END DECLARE SECTION`は見つかりません。

`Missing or out of place `EXEC SQL INCLUDE SQLCA``

  プログラム内で `EXEC SQL INCLUDE SQLCA`を、最初の実行可能なプリコンパイラステートメント として含まれていません。

`Multiple cursor declaration`

  前で宣言された名前のカーソルが再び宣言されました。

`Multiple declaration of character variable`

  前で宣言された名前の文字変数が再び宣言されました。

`Numbers of attributes and variables do not match`

  アトリビュートの数が、`FETCH`, `INSERT` または `SELECT INTO` に指定された値の数と一致しませんでした。

`Syntax error`

  SQL コマンドラインで構文エラーが発生しました。

`Syntax error in declaration section`

  ユーザーのプリコンパイラプログラムのセクションで 構文エラーが起こりました。 これは、言語の記述のエラーかプリコンパイルエラーかによるものです。

`Undeclared variables:`

  プリコンパイラで使用するための宣言をしていない変数を使用しようとしました。

`Update not allowed in multi-tables join`

  複合ジョインの更新操作の実行をしようとしました。

`Variable name too long`

  変数名の宣言で最大長 128 文字を越えました。

`Variables maximum`

  プリコンパイラで宣言可能な変数の数の最大数 256　を越えました。

## 8.2 スタテック SQL 実行時エラーメッセージ

以下は、スタテック SQL 実行時のエラーメッセージのリストとその簡単な説明です。

`(-0)` | `Open table failed`
| Empressは、指定されたテーブルをオープンできませんでした。
`(-1)` | `Invalid WHERE clause (msmp_api_getbegin() or msmp_api_srtbeg() error )`
| 無効な`WHERE`句が指定されました。
`(-2)` | `Record cannot be deleted`
| Empressは、指定されたレコードを削除できませんでした。
`(-3)` | `Conversion error during insert (msmp_api_putvs() or msmp_api_putvi() error)`
| 無効なデータ型の値を挿入しようとしました。
`(-4)` | `Cursor not active`
| オープンされていないカーソルを使用しようとしました。
`(-5)` | `Cannot add record`
| Empressは、指定したレコードをテーブルに追加することができませんでした。
`(-6)` | `Cannot begin transaction`
| Empressは、指定したトランザクションを開始することができませんでした。 これは、おそらく現在実行しているトランザクションが存在するかどうかによります。
`(-7)` | `Cannot update record`
| Empressは、指定したレコードを更新することができませんでした。
`(-8)` | `Conversion error during update (msmp_api_putvs() or msmp_api_putvi() error)`
| 間違ったデータタイプの値を変更しようとしました。
`(-10)` | `Read error`
| テーブルから通常、レコードを検索する際に失敗しました。 通常、この場合のレコードはロックされた状態です。 このエラーは以下のステートメントに関連します。 `EXEC SQL SELECT` statment `EXEC SQL FETCH` statement `EXEC SQL UPDATE` statement
`(-11)` | `Call procedure failed`
| `EXEC SQL CALL`の処理での式および条件の作成時に失敗しました。
`(-12)` | `Set value failed`
| `EXEC SQL :var = expr` ステートメントでの 式および条件の作成時に失敗しました。
`(-13)` | `Conflict with already opened cursor`
| 既にオープンされたカーソルに関連付けられたテーブルの オープンをしようとしています。 このエラーメッセージは以下のステートメントと関連しています。 `EXEC SQL OPEN cursor` `EXEC SQL OPEN_TABLE table_name` `EXEC SQL UPDATE` `EXEC SQL DELETE` `EXEC SQL SELECT`
`(-14)` | `Close table failed`
| データベースまたはテーブルが存在しないか、あるいは オープンされていないテーブルを `EXEC SQL CLOSE TABLE table_name`ステートメントで テーブルのクローズをしようとしています。
`(-15)` | `Empress initialization failed`
| `EXEC SQL INIT`の初期化処理の実行に失敗しました。
`(-16)` | `Invalid database`
| `EXEC SQL DATABASE IS database_nameステートメントでの 物理データベースの検出に失敗しました。` .

## 8.3 ダイナミック SQL エラーメッセージ

以下は、ダイナミック SQL 実行時のエラーメッセージのリストです。 これらのメッセージは`SQLERRMC`によって返されます。 また、括弧内の数字は、`SQLCODE`によって返されたエラーコードです。

`(-60)` | `Undefined prepared statement name`
| `PREPARE`ステートメントによって定義されていないステートメント名を `EXECUTE`コマンドで参照したか、あるいは定義されていない ステートメント名で宣言したカーソルをオープンしようとしています。
`(-61)` | `Incorrect number of actual parameters`
| `USING`句中の変数の数が、 プリペアステートメント中のパラメータの数と等しくありません。
`(-62)` | `Invalid `PREPARE` statement`
| `PREPARE`ステートメントは、 `NULL`ポインタである変数を参照しました。
`(-63)` | `Overflow of table of prepared statements`
| プログラム内で 200 を越えるプリペアをしようとしました。
`(-64)` | `Wrong data type in `USING` clause`
| `USING`句中の変数は、認識できないデータタイプです。
`(-65)` | `Error detected by the SQL processor:`
| SQLステートメントは実行することができませんでした。 通常、SQLプロセッサーによって出力されたエラーメッセージは、 このメッセージが追加されます。 この場合の原因として通常、構文エラー、存在しないアトリビュートまたテーブルを アクセスしようとしたことが考えられます。 また、この場合データベースかテーブルがロックされる可能性があります。
`(-66)` | `Attempt to execute a `SELECT` statement`
| `EXECUTE`で、クエリを実行することができません。
`(-67)` | `Signal caught during execution of a dynamic statement`
| SQLステートメントの実行はプロセッサーがシグナルを受信したためアボートされました。
`(-68)` | `Unidentified error detected during execution of dynamic statement`
| SQL ステートメントは、原因不明な理由により実行することができません。 この場合、有効なデータベースが指定されているかを確認してください。
`(-69)` | `Overflow of table of declared cursors`
| プログラム内で 200 を越えるカーソルの宣言をしようとしました。
`(-70)` | `Attempt to redefine a cursor`
| 既に宣言されているカーソル名を使用してカーソルを宣言しようとしました。
`(-71)` | `Attempt to open a previously opened cursor`
| 既にオープンされているカーソルをオープンすることはできません。 最初にそのカーソルをクローズし、再オープンしなくてはなりません。
`(-72)` | `Open cursor error`
| カーソルの失敗は、このSQL `SELECT` ステートメントの実行と関係があります。 これは、構文エラー、無効なデータベース、あるいは存在しないテーブルまたは アトリビュートによる原因が考えられます。 このエラーでは、データベースおよびテーブルがロックされることも起る可能性があります。
`(-73)` | `Close cursor error`
| オープンされていないカーソルをクローズしようとしました。
`(-74)` | `Wrong number of variables/descriptor areas in `FETCH` statement`
| `INTO`句に指定されたディスクリプタ中の変数の数および有効な領域は、 クエリの検索するアイテム数と等しくありません。
`(-75)` | `Unsupported array base type`
| 配列変数の要素のデータタイプはサポートされていません。
`(-76)` | `Wrong type of variable in `FETCH`/`GET DESCRIPTOR` statement`
| `GET DESCRIPTOR`ステートメントまたは`FETCH`ステートメントの `INTO`句の変数は、認識できないデータタイプです。
`(-77)` | `Internal conversion error`
| Empressは、 アトリビュートまたは検索アイテムの内部データタイプと C 言語変数のデータタイプの変換の実行ができません。
`(-78)` | `Attempt to update/delete from a cursor opened in read mode`
| デフォルトでは、カーソルは読み込み専用モードで宣言されています。 このカーソルを使用して更新および削除をするためには、 カーソルに対して`UPDATE`、`DEFERRED`モードで宣言する必要があります。 また、これらのモードの1つでテーブルを明示的にオープンすることもできます。
`(-79)` | `Cursors used in `UPDATE`/`DELETE` must be made up of a single table`
| 複数のテーブルに関連付けされた`SELECT`ステートメントに基づいたカーソルである場合、 このカーソルを使用して更新および削除することはできません。
`(-80)` | `Wrong table name in `UPDATE`/`DELETE` statement`
| `UPDATE`または`DELETE`ステートメントで指定されたテーブル名は カーソルで定義するために`SELECT`ステートメント中で使用できません。
`(-81)` | `Use of a cursor containing an aggregate function in `UPDATE`/`DELETE``
| 集権関数を含む`SELECT`ステートメントに基づいたカーソルを使って レコードの更新および削除することはできません。
`(-82)` | `Internal error detected while executing a `DELETE` statement`
| Empressは指定されたレコードを削除することができません。 これは、テーブル上に参照制約が設定されていることが原因です。
`(-83)` | `Wrong attribute name in `UPDATE` statement`
| アトリビュートが選択されていない カーソルを使用してアトリビュートを更新しようとしました。
`(-84)` | `Failed `UPDATE` statement`
| Empressは指定されたレコードを更新できません。 これは、テーブル上に参照制約かユニークインデックスが設定されていることが原因です。
`(-85)` | `Wrong data type of variable in `UPDATE` statement`
| `UPDATE`ステートメント内の変数は認識できないデータタイプです。
`(-86)` | `Overflow of table of allocated descriptors`
| プログラム中で 200 を越えるディスクリプタをアロケートしようとしました。
`(-87)` | `Attempt to reallocate a descriptor`
| 既に存在するディスクリプタ名を使ってディスクリプタをアロケートしようとしました。
`(-88)` | `Use of a deallocated descriptor`
| 既に解放されているディスクリプタを使用しようとしました。
`(-89)` | `Wrong statement name`
| `PREPARE`ステートメントによって定義されていないステートメント名の ディスクリプタを使用しようとしました。
`(-90)` | `Descriptor contains fewer areas than required`
| ステートメントを記述するために使用しているディスクリプタは、 パラメータの数(入力のため)か検索アイテム(出力のため)の数より 少ないエリアを含まれています。
`(-91)` | `Descriptor must be associated with current cursor`
| カーソルと無関係のステートメントを記述された ディスクリプタを使用してフェッチを行おうとしました。
`(-92)` | `Wrong specification of descriptor area`
| 無効なディスクリプタ領域をアクセスしようとしました。
`(-93)` | `Attempt to update an output descriptor`
| 出力のために記述されたディスクリプタ内のフィールドへ値を割り付けることが できませんでした。
`(-94)` | `Invalid descriptor in `GET DESCRIPTOR` statement`
| この操作において有効ではないディスクリプタをアクセスしようとしました。
`(-95)` | `Wrong data type of variable in `GET DESCRIPTOR` statement`
| ステートメント中の変数は、 アクセスするフィールドに対し、無効なデータタイプです。
`(-96)` | `Output descriptor used in `EXECUTE`/`OPEN` statement`
| `EXECUTE`または `OPEN`ステートメントの `USING`句で出力ディスクリプタを使用しようとしました。 代わりに入力ディスクリプタを使用すべきです。
`(-97)` | `Descriptor has not been prepared for specified statement`
| ステートメントと対応した記述ではないディスクリプタを使用して、 `EXECUTE`ステートメントまたは、`OPEN`カーソル、 `FETCH`を行おうとしました。
`(-98)` | `Input descriptor used in `FETCH` statement`
| `FETCH`ステートメントで入力ディスクリプタを使用としました。 代わりに出力ディスクリプタを使用すべきです。
`(-99)` | `Attempt to use an inactive cursor`
| オープンされていないカーソルをアクセスしようとしました。
`(-100)` | `Attempt to opena cursor based on a non-`SELECT` statement`
| `SELECT`ステートメントではない SQLステートメントに対し、 宣言したカーソルをオープンしようとしました。
`(-101)` | `Attempt to describe a statement with no parameters`
| パラメータを含まない入力プリペアステートメントを記述しようとしました。
`(-102)` | `Ambiguous `DESCRIBE OUTPUT`: two or more opened cursors are based on the same statement`
| 関連した複数のオープンされたカーソルを 出力ステートメントを記述することを試みました。 Empressは、関連するべきディスクリプタの カーソルを知りません。