SQL データ・コードというプロパティーは、EGL ホスト変数と関連付ける SQL データ型を示しています。SQL データ・コードは、宣言時、検証時、または生成したプログラムの実行時に、データベース管理システムによって使用されます。
プリミティブ型である CHAR、DBCHAR、HEX、または UNICODE に該当するホスト変数の SQL データ・コードは、変更することができます。ただし、ホスト変数がこれら以外のいずれかのプリミティブ型である場合、SQL データ・コードは固定です。
EGL によってデータベース管理システムから列定義を検索した場合、検索結果に SQL データ・コードがあった場合は、これに変更を加えないでください。
テーブル列が可変長か固定長かを指定するには、次の表に示すように、対応するホスト変数の SQL データ・コードを該当する値に設定します。
EGL プリミティブ型 | SQL データ型 | 可変長または固定長 | SQL データ・コード |
---|---|---|---|
CHAR | CHAR (デフォルト) | 固定長 | 453 |
VARCHAR、長さ < 255 | 可変長 | 449 | |
VARCHAR、長さ > 254 | 可変長 | 457 | |
DBCHAR、 UNICODE | GRAPHIC (デフォルト) | 固定長 | 469 |
VARGRAPHIC、長さ < 128 | 可変長 | 465 | |
VARGRAPHIC、長さ > 127 | 可変長 | 473 |
型が HEX の EGL ホスト変数では、EGL プリミティブ型に対応しないデータ型の SQL 列であれば、どのような SQL 列へのアクセスでもサポートされています。
文字データを SQL テーブル列から読み取って、長さの短いホスト変数に変換する場合、その内容は右端から切り捨てられます。切り捨てのテストを行うには、EGL の if 文で予約語 trunc を使用します。
数値データを SQL テーブル列から読み取って長さの短いホスト変数に変換する場合、先頭のゼロの桁は左端から切り捨てられます。ゼロの桁を切り捨てても桁数がホスト変数より大きい場合は、(10 進数の) 小数点以下が右端から削除されます。このときエラーは表示されません。小数点以下が削除されても桁数が多すぎる場合は、負の SQL コードが戻り、オーバーフロー条件になっていることが表示されます。
次の表に、EGL エディターの検索機能によってデータベース管理システムから情報が抽出されたときに割り当てられる EGL ホスト変数特性を示します。
SQL データ型 | EGL ホスト変数特性 | SQL データ・コード (SQLTYPE) | ||
---|---|---|---|---|
プリミティブ型 | 長さ | バイト数 | ||
BIGINT | HEX | 16 | 8 | 493 |
CHAR | CHAR | 1 から 32767 | 1 から 32767 | 453 |
DATE | CHAR | 10 | 10 | 453 |
DECIMAL | DECIMAL | 1 から 18 | 1 から 10 | 485 |
DOUBLE | HEX | 16 | 8 | 481 |
FLOAT | HEX | 16 | 8 | 481 |
GRAPHIC | DBCHAR | 1 から 16383 | 2 から 32766 | 469 |
INTEGER | BIN | 9 | 4 | 497 |
LONG VARBINARY | HEX | 65534 | 32767 | 481 |
LONG VARCHAR | CHAR | >4000 | >4000 | 457 |
LONG VARGRAPHIC | DBCHAR | >2000 | >4000 | 473 |
NUMERIC | DECIMAL | 1 から 18 | 1 から 10 | 485 |
REAL | HEX | 8 | 4 | 481 |
SMALLINT | BIN | 4 | 2 | 501 |
TIME | CHAR | 8 | 8 | 453 |
TIMESTAMP | CHAR | 26 | 26 | 453 |
VARBINARY | HEX | 2 から 65534 | 1 から 32767 | 481 |
VARCHAR | CHAR | 4000 以下 | 4000 以下 | 449 |
VARGRAPHIC | DBCHAR | 2000 以下 | 4000 以下 | 465 |
VARCHAR 型または VARGRAPHIC 型の SQL テーブル列には最大長が定義されており、retrieve コマンドでは、この最大長を使用して EGL ホスト変数に長さを割り当てます。ただし、LONG VARCHAR 型または LONG VARGRAPHIC 型の SQL テーブル列には最大長が定義されていないので、retrieve コマンドでは、SQL データ型の最大長を使用して長さを割り当てます。
EGL システム・デフォルトの長いグレゴリオ形式で使用される形式が、SQL データベース・マネージャーで指定される日付形式と同じであることを確認してください。EGL 形式の設定方法については、 『VGVar.currentFormattedGregorianDate』を参照してください。
システム変数 VGVar.currentFormattedGregorianDate で提供される日付が SQL データベース・マネージャーで使用される形式になるように、この 2 つの形式を一致させることができます。
関連概念
SQL サポート