TimesTenにおける相違点: データ型に関する考慮事項
データ型のサポートおよび型変換に関するTimesTen固有の考慮事項を示します。
PL/SQLのデータ型とTimesTen SQLのデータ型との変換
TimesTenでは、PL/SQLのデータ型とTimesTen SQLのデータ型との間の変換がサポートされています。
このサポートについては、次の項で説明します。
PL/SQLからSQLへのサポートされている変換
特定のPL/SQLデータ型をSQLデータ型に変換できます。
表3-5に、サポートされているデータ型の変換を示します(上の1行がPL/SQLの型を表し、左の1列がSQLの型を表します)。データ型はデータ型ファミリごとに分類されており、列がPL/SQLの型ファミリを表し、行がTimesTenの型ファミリを表します。「はい」は該当の2つのファミリ間で変換が可能であることを示します。サポートされている変換は双方向です。
ノート:
「サポートされていないデータ型」も参照してください。
表3-5 PL/SQLデータ型とTimesTen SQLデータ型との間のサポートされている変換
型ファミリ | NUMERIC | CHARACTER | BINARY | DATETIME | INTERVAL | ROWID |
---|---|---|---|---|---|---|
|
はい |
はい |
いいえ |
いいえ |
いいえ |
いいえ |
|
はい |
はい |
はい |
はい |
はい |
はい |
|
いいえ |
はい |
いいえ |
はい |
いいえ |
いいえ |
|
いいえ |
はい |
いいえ |
いいえ |
いいえ |
いいえ |
|
いいえ |
はい |
いいえ |
いいえ |
いいえ |
はい |
|
いいえ |
はい |
はい |
いいえ |
いいえ |
はい |
PL/SQLからSQLへの推奨されるマッピング
TimesTenのデータ型をPL/SQLにマップする際の推奨事項を示します。
表3-6に、TimesTenデータ型の概要、およびPL/SQLへの型マッピングに関する推奨事項を示します。
表3-6 データ型の使用方法およびサイズ
TimesTenのデータ型 | 説明 |
---|---|
|
0から255までの範囲の符号なし整数が対象です。 型PL/SQL |
|
-32,768から32,767の範囲の16ビットの符号付き整数が対象です。 型PL/SQL |
|
-2,147,483,648から2,147,483,647の範囲の符号付き整数が対象です。 これは、 |
|
-9,223,372,036,854,775,808から9,223,372,036,854,775,807の範囲の8バイトの符号付き整数が対象です。 PL/SQL |
|
浮動小数点の精度が必要な場合に使用します。 |
キャラクタ・タイプ |
すべてのPL/SQLキャラクタ・タイプに、32,767バイトまでのデータを格納できます。
|
日時、時間隔および時間の型 |
これらの型をキャラクタ・タイプ間で変換するときに使用されるデフォルトの書式とは異なる書式が必要な場合は、組込みファンクション |
バイナリ型 |
|
PL/SQLからSQLへの変換の例
これは、PL/SQLからSQLへの変換の例です。
2つの列を持つ表がある場合を検討します。Col1
のデータ型はTT_INTEGER
であり、Col2
のデータ型はNUMBER
です。PL/SQLプログラムで、型PLS_INTEGER
のv_var1
および型VARCHAR2
のv_var2
という2つの変数を宣言します。SELECT
によって表のデータ行を2つのPL/SQL変数に格納します。
SELECT
文を実行すると、データ型の変換が行われます。Col1
は、TimesTenのSQL TT_INTEGER
型からPLS_INTEGER
型に変換されます。Col2
は、TimesTenのSQL NUMBER
型からPL/SQL VARCHAR2
型に変換されます。問合せが正しく実行されます。
Command> CREATE TABLE test_conversion (Col1 TT_INTEGER, Col2 NUMBER);
Command> INSERT INTO test_conversion VALUES (100, 20);
1 row inserted.
Command> DECLARE
v_var1 PLS_INTEGER;
v_var2 VARCHAR2 (100);
BEGIN
SELECT Col1, Col2 INTO v_var1, v_var2 FROM test_conversion;
DBMS_OUTPUT.PUT_LINE (v_var1);
DBMS_OUTPUT.PUT_LINE (v_var2);
END;
/
100
20
PL/SQL procedure successfully completed.
日付書式およびタイムスタンプ書式: NLS_DATE_FORMATおよびNLS_TIMESTAMP_FORMAT
TimesTenでは、ユーザー指定のNLS_DATE_FORMAT
設定およびNLS_TIMESTAMP_FORMAT
設定はサポートされていません。
-
NLS_DATE_FORMAT
は常にyyyy-mm-dd
です。 -
NLS_TIMESTAMP_FORMAT
は常にyyyy-mm-dd hh:mi:ss.ff6
(秒を示す小数点以下桁数が6桁まで)です。
SQLおよびPL/SQL TO_DATE
およびTO_CHAR
ファンクションを使用して、必要な他の形式を指定することができます。『Oracle TimesTen In-Memory Database SQLリファレンス』の式を参照してください。