データ型の変換
いくつかの種類のデータ型変換について説明します。
「TimesTenにおける相違点: データ型に関する考慮事項」のデータ型変換に関する情報も参照してください。
PL/SQLのデータ型間の変換
TimesTenでは、PL/SQLのデータ型間での暗黙的および明示的な変換がサポートされています。
型がVARCHAR2
の変数v_sal_hike
の例について検討します。給与の合計を計算する場合、PL/SQLでは最初にv_sal_hike
がNUMBER
に変換されてから、操作が実行されます。結果の型はNUMBER
になります。正しい結果を取得するために、PL/SQLでは暗黙的変換が使用されます。
Command> DECLARE
v_salary NUMBER (6) := 6000;
v_sal_hike VARCHAR2(5) := '1000';
v_total_salary v_salary%TYPE;
BEGIN
v_total_salary := v_salary + v_sal_hike;
DBMS_OUTPUT.PUT_LINE (v_total_salary);
end;
/
7000
PL/SQL procedure successfully completed.
ノート:
「日付書式およびタイムスタンプ書式: NLS_DATE_FORMATおよびNLS_TIMESTAMP_FORMAT」も参照してください。
アプリケーションのデータ型とPL/SQLまたはSQLのデータ型との間の変換
TimesTenでは、アプリケーション・プログラムのデータ型とPL/SQLのデータ型の変換、およびアプリケーション・プログラムのデータ型とTimesTen SQLのデータ型の変換がサポートされています。
この項の内容は次のとおりです。
アプリケーションのデータ型の変換マッピング
ODBC APIを使用するアプリケーションでのデータ型は、PL/SQLプログラムのデータ型にマップできます。
ODBCからPL/SQLへの型マッピングの詳細は、『Oracle TimesTen In-Memory Database C開発者ガイド』のパラメータの型の割当ておよび型の変換を参照してください。
表3-4 ODBCでのSQLからPL/SQLへの型マッピングの例
ODBCの型 | PL/SQLの型 |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
アプリケーションのデータ型の変換例
CプログラムでODBC APIを使用しており、VARCHAR2
型のC変数をNUMBER
型のPL/SQL変数にバインドする場合を検討します。TimesTenでは、暗黙的な変換が行われます。
Command> VARIABLE c_var VARCHAR2 (30) := '961';
Command> DECLARE v_var NUMBER;
BEGIN
v_var := :c_var;
DBMS_OUTPUT.PUT_LINE (v_var);
END;
/
961
PL/SQL procedure successfully completed.
次の例では、型TT_BIGINT
の列を持つ表を作成し、PL/SQLを使用してTimesTen SQL INSERT
文を起動します。型SQL_VARCHAR
のバインド変数がINSERT
文で使用されます。アプリケーションでINSERT
文を直接起動する場合と同様の変換が行われます。
Command> CREATE TABLE conversion_test2 (Col1 TT_BIGINT);
Command> VARIABLE v_var VARCHAR2 (100) := '1000';
Command> BEGIN
INSERT INTO conversion_test2 VALUES (:v_var);
END;
/
PL/SQL procedure successfully completed.
Command> SELECT * FROM conversion_test2;
< 1000 >
1 row found.
ノート:
SQLでは、SQLがPL/SQLプログラムによって起動されたか、アプリケーションによって直接起動されたかに関係なく、同じ変換が行われます。