TimesTenでのODBC 3.5のサポート
この項では、TimesTenでのODBC 3.5のサポートについて、次の内容を示します。
TimesTenでのODBC 3.5の使用
ODBC 3.5仕様に従い、ODBC 3.5アプリケーションは、SQLAllocHandle
をコールした直後にSQLSetEnvAttr
をコールしてSQL_ATTR_ODBC_VERSION
をSQL_OV_ODBC3
に設定します。
例:
RetCode = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &hEnv);
...
RetCode = SQLSetEnvAttr(hEnv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, 0);
...
RetCode = SQLAllocHandle(SQL_HANDLE_DBC, hEnv, &hDbc);
...
RetCode = SQLDriverConnect(hDbc, winHandle, connStr, SQL_NTS,
outConnStr, outConnStrBufferLen,
&outConnStrLen, SQL_DRIVER_NOPROMPT);
...
ヒント:
TimesTenリリース22.1はメジャー・リリースであるため、既存のODBCアプリケーションを再コンパイルして再リンクする必要があります。「以前のバージョンのTimesTenとのODBC APIの非互換性」も参照してください。
また、静的ではなく動的にアプリケーションをリンクすることをお薦めします。
ODBC 3.5でのクライアント/サーバーのリリース間の制限事項
以前のTimesTenリリースでは、クロスリリース・クライアント/サーバー接続がサポートされており、クライアントのバージョンがサーバーのバージョンよりも新しいか古い可能性があります(18.1サーバーへの22.1クライアントの接続や、22.1サーバーへの18.1クライアントの接続など)。
ODBC 3.5機能の変更により、クライアントがSQLSetEnvAttr
コールにSQL_ODBC_OV3
を指定して、自身がODBC 3.x準拠であることを宣言した場合(前の項を参照)、リリース18.1以上のTimesTenクライアントは古いTimesTenサーバーに接続できません。
ノート:
この制限は、ODBC 2.5アプリケーションには影響しません。
ODBC 3.5の新しい関数および後継関数のサポート
TimesTenでサポートされている新しいODBC 3.5関数と後継ODBC 3.5関数を示します。
表10-1 ODBC 3.5のサポートされている新しい関数と後継関数
関数 | ノート |
---|---|
|
|
|
コールは「Driver not capable」を返します。 |
|
ODBC 2.5関数 |
|
ODBC 2.5関数 |
|
ノートなし |
|
ODBC 2.5関数 |
|
TimesTenは、 |
|
|
|
ODBC 2.5関数 TimesTenドライバ・マネージャ(TTDM)のサポートが追加されました。 「ODBC 3.5のSQLSetConnectAttrおよびSQLGetConnectAttrでの属性サポート」を参照してください。 |
|
ノートなし |
|
ノートなし |
|
ODBC 2.5関数 ネイティブ・エラー・コードはTimesTenのエラーです。次のようなエラーが発生する場合があります。「Execution at Oracle failed.Oracle error code
|
|
ODBC 2.5関数 ネイティブ・エラー・コードはTimesTenのエラーです。次のようなエラーが発生する場合があります。「Execution at Oracle failed.Oracle error code
|
|
TimesTenドライバ・マネージャ(TTDM)のサポートが追加されました。 「ODBC 3.5のSQLGetEnvAttrでの属性サポート」を参照してください。 |
|
「ODBC 3.5のSQLGetInfoでの情報型サポート」を参照してください。 |
|
ODBC 2.5関数 「ODBC 3.5のSQLSetStmtAttrおよびSQLGetStmtAttrでの属性サポート」を参照してください。 |
|
ODBC 2.5関数 「ODBC 3.5のSQLSetConnectAttrおよびSQLGetConnectAttrでの属性サポート」を参照してください。 |
|
ノートなし |
|
ノートなし |
|
ODBCアプリケーションが |
|
ODBC 2.5関数 「ODBC 3.5のSQLSetStmtAttrおよびSQLGetStmtAttrでの属性サポート」を参照してください。 |
ODBC 3.5データ型のサポートに関する留意事項
TimesTenでは、新しいODBC 3.5データ型がサポートされています。
-
SQL_C_NUMERIC
-
SQL_C_TYPE_DATE
-
SQL_C_TYPE_TIME
-
SQL_C_TYPE_TIMESTAMP
TimesTenは、次のデータ型をサポートしていないか、サポートが限定的です。
-
SQL_GUID
: TimesTenでは、このデータ型からCデータ型への変換をサポートしていません。 -
SQL_INTERVAL_
xxxx
: TimesTenでは、間隔のデータ型からCのデータ型への変換はサポートされていません。 -
SQL_WCHAR
: TimesTenは、このデータ型からC数値型への変換をサポートしていません。
ODBC 3.5の環境属性のサポート
TimesTenでサポートされている、ODBC 3.5での標準の環境属性を示します。
表10-2 標準の環境属性(ODBC 3.5)
属性 | ノート |
---|---|
|
サポートされている値は |
|
サポートされている値は |
ODBC 3.5のSQLSetConnectAttrおよびSQLGetConnectAttrでの属性サポート
ODBC 3.5のSQLSetConnectAttr
関数およびSQLGetConnectAttr
関数について、TimesTenでの標準属性のサポート状況を説明します。また、ODBC 3.5とODBC 2.5の両方でサポートされている、TimesTen固有の接続属性を示します。
表10-3に、TimesTenでサポートされているODBC 3.5 SQLSetConnectAttr
関数およびSQLGetConnectAttr
関数の標準の属性を示します。表10-4では、ODBC 3.5とODBC 2.5の両方でサポートされている、TimesTen固有の接続属性を示します。これらの関数を使用すると、初期接続後の接続属性を設定したり、それらの設定を取得できます。
「ODBC 3.5のSQLSetStmtAttrおよびSQLGetStmtAttrでの属性サポート」も参照してください。これらの属性は、SQLSetConnectAttr
を使用して設定することもできます。この場合、値は接続のすべての文のデフォルトとして機能します。
ノート:
-
SQLSetConnectAttr
またはSQLSetStmtAttr
を介した属性設定は、対応する接続属性の設定を上書きします(該当する場合)。 -
ここに記載されている説明は、
SQLSetConnectAttrW
およびSQLGetConnectAttrW
にも適用されます。 - TimesTenドライバ・マネージャ(TTDM)は、表10-4で説明されているように、
TT_TTDM_CONNECTION_TYPE
属性でサポートされています。
表10-3 標準の接続属性(ODBC 3.5)
属性 | ノート |
---|---|
|
サポートされている設定は |
|
読取り専用(取得)。値は常に |
|
読取り専用(取得)。 |
|
サポートされている設定は0。他の値に設定しても0に戻されます。 |
|
ドライバは機能しません。 |
|
サポートされている設定は |
表10-4 TimesTenの接続属性
属性 | ノート |
---|---|
|
これはクライアント/サーバー専用で、 『Oracle TimesTen In-Memory Databaseオペレーション・ガイド』のSQLおよびPL/SQLのタイムアウト値の選択も参照してください。 |
|
『Oracle TimesTen In-Memory Databaseキャッシュ・ガイド』の動的ロードの有効化または無効化を参照してください。これには、 |
|
『Oracle TimesTen In-Memory Databaseキャッシュ・ガイド』の動的ロードでエラーを返すを参照してください。これには、 |
|
読取り専用(取得)。これは、データベースがTimesTen Scaleoutに対して有効なTimesTenインスタンスからのものかどうかを示します。 |
|
これには、 |
|
これには、 |
|
これには、 |
|
読取り専用(取得)。「自動クライアント・フェイルオーバーの構成」を参照してください。これは、TimesTen接続属性 |
|
問合せのパフォーマンスを最適化するには、 |
|
「ODBCでの自動クライアント・フェイルオーバーのサポート」を参照してくださいこの属性はクライアント専用です。TimesTen直接モードで使用しようとすると、 |
|
パラレル・レプリケーションを使用し、レプリケーション・トラックを指定するODBCアプリケーションの場合、これは接続のトラック番号を指定する |
|
TTDMを使用するODBCアプリケーションの場合、属性としてこれを指定すると、
次の例を参照してください。 |
この例では、TTDMを使用するアプリケーションに、属性TT_TTDM_CONNECTION_TYPE
を指定してSQLGetConnectAttr
を使用する方法を示します。前述の表に記載されている接続タイプは、connType
で返されます。
SQLINTEGER connType = 0; rc = SQLGetConnectAttr(hdbc, TT_TTDM_CONNECTION_TYPE, &connType, SQL_IS_INTEGER, NULL);
ODBC 3.5のSQLSetStmtAttrおよびSQLGetStmtAttrでの属性サポート
ODBC 3.5のSQLSetStmtAttr
関数およびSQLGetStmtAttr
関数について、TimesTenでサポートされている標準属性を示します。また、ODBC 3.5とODBC 2.5の両方でサポートされている、TimesTen固有の文属性を示します。
表10-5に、TimesTenでサポートされているODBC 3.5 SQLSetStmtAttr
関数およびSQLGetStmtAttr
関数の標準の属性を示します。表10-6では、ODBC 3.5とODBC 2.5の両方でサポートされている、TimesTen固有の文属性を示します。これらの関数を使用すると、文属性の設定を設定または取得できます。
接続に関連付けられたすべての文に対して属性のデフォルト値を設定するには、SQLSetConnectAttr
を使用します。
ノート:
-
SQLSetConnectAttr
またはSQLSetStmtAttr
を介した属性設定は、対応する接続属性の設定を上書きします(該当する場合)。 -
TimesTenでは、「ODBC 2.5のSQLSetStmtOptionおよびSQLGetStmtOptionでのオプション・サポート」で示されているオプションもサポートされています。
表10-5 標準の文属性(ODBC 3.5)
属性 | ノート |
---|---|
|
ノートなし |
|
ノートなし |
|
サポートされている設定は |
|
サポートされている設定は |
|
ノートなし |
|
読取り専用(取得)。 |
|
読取り専用(取得)。 |
|
サポートされている設定は |
|
ノートなし |
|
ノートなし |
|
ノートなし |
|
ノートなし |
|
ノートなし |
|
ノートなし |
|
ノートなし |
|
ノートなし |
|
ノートなし |
|
ノートなし |
表10-6 TimesTenの文属性
属性 | ノート |
---|---|
|
クライアント/サーバーでの、結果セット・バッファの最大バイト数を決定します。「ODBCを使用したクライアント/サーバーでの結果セット・バッファ・サイズの構成」を参照してください。 |
|
クライアント/サーバーでの、結果セット・バッファの最大行数を決定します。「ODBCを使用したクライアント/サーバーでの結果セット・バッファ・サイズの構成」を参照してください。 |
|
「複数のデータ行のプリフェッチ」を参照してください。 |
|
「SQL文のしきい値期間の設定」を参照してください。これは、SQL文の時間のしきい値(秒単位)を指定するためのオプションで、経過後にTimesTenによってサポート・ログに警告が書き込まれます。 |
|
コマンドはその他の接続と共有されません。『Oracle TimesTen In-Memory Databaseリファレンス』のPrivateCommandsを参照してください。 |
|
準備済の特定の文をキャッシュのパススルー機能によってOracle Databaseにパススルーするかどうかを決定します。 ノート: TimesTenでは、このオプションは 「パススルー・ステータスの確認」を参照してください。『Oracle TimesTen In-Memory Databaseキャッシュ・ガイド』のパススルー・レベルの設定も参照してください。 |
ODBC 3.5のSQLGetEnvAttrでの属性サポート
この項では、SQLGetEnvAttr
のTimesTen環境属性について説明します。
表10-7では、ODBC 3.5とODBC 2.5の両方でサポートされているTimesTen固有の環境属性を示します。これらの属性は、TimesTenドライバ・マネージャ(TTDM)をサポートしています。
表10-7 TimesTenの環境属性
属性 | ノート |
---|---|
|
TTDMを使用するODBCアプリケーションの場合、これを属性として指定し、
次の例を参照してください。 ノート: 使用可能な機能は、TTDMベースのアプリケーションが実行されているTimesTen環境で使用可能なものによって異なります。 |
|
TTDMを使用するODBCアプリケーションの場合、これを属性として指定し、 次の例を参照してください。 |
この例では、TTDMを使用するアプリケーションに、属性TT_TTDM_VERSION
を指定してSQLGetEnvAttr
を使用する方法を示します。
SQLCHAR ttdmver[21]; rc = SQLGetEnvAttr(henv, TT_TTDM_VERSION, (SQLPOINTER)ttdmver, sizeof(ttdmver), NULL);
ttdmver
で返される値は、アプリケーションが使用しているTTDMライブラリのTimesTenリリースを示します。
次の例では、TTDMを使用するアプリケーションに、属性TT_TTDM_CAPABILITIES
を指定してSQLGetEnvAttr
を使用する方法を示します。
SQLINTEGER ttdmcap = 0; rc = SQLGetEnvAttr(henv, TT_TTDM_CAPABILITIES, (SQLPOINTER)&ttdmcap, 0, NULL);
ttdmcap
で返される値は、前述の表に記載されている定数のビット単位のOR
で、TTDMで現在使用可能な機能を示します。次に、サポートされている機能を確認します。
... if ( ttdmcap & TT_TTDM_CLIENT ) printf("TTDM: Client driver functions are available\n"); if ( ttdmcap & TT_TTDM_DIRECT ) printf("TTDM: Direct driver functions are available\n"); if ( ttdmcap & TT_TTDM_XLA ) printf("TTDM: XLA functions are available\n"); if ( ttdmcap & TT_TTDM_ROUTING ) printf("TTDM: Routing API functions are available\n"); if ( ttdmcap & TT_TTDM_UTILITY ) printf("TTDM: Utility functions are available\n"); ...
ODBC 3.5のSQLColAttributeのTimesTenフィールド識別子
SQLColAttribute
関数は、結果セット内の列の記述子情報を返します。
この関数および標準的な列記述子の詳細は、ODBC APIのリファレンス・マニュアルを参照してください。
ノート:
これにより、ODBC 2.5のSQLColAttributes
(複数形)が置き換えられます。
表10-8を参照してください。
表10-8 TimesTenフィールド識別子: SQLColAttribute (ODBC 3.5)
記述子 | コメント/説明 |
---|---|
|
インライン・データを備えた列の場合は |
|
キャラクタ型列において、バイト長セマンティクスを備えた列の場合は"BYTE"を、キャラクタ長セマンティクスを備えた列の場合は"CHAR"を返します。キャラクタ以外の列の場合は、""を返します。この情報は、 この情報は、データ長がバイト単位またはキャラクタ単位のいずれで測定されるかを示しています。TimesTenにおける長さセマンティクスは、Oracle Databaseの場合と同じです。『Oracle Databaseグローバリゼーション・サポート・ガイド』の長さセマンティクスを参照してください。 |
ODBC 3.5のSQLGetInfoでの情報型サポート
ODBC関数SQLGetInfo
の、標準の情報型とTimesTen固有の情報型について、TimesTenのODBC 3.5実装でのサポート状況を示します。
表10-9に、ODBC 3.0で導入されたか、名前変更された標準の情報型がTimesTenでどのようにサポートされているかを示します。TimesTen固有の正しい戻り値に留意してください。
標準の情報については、次の場所を参照してください。
https://docs.microsoft.com/en-us/sql/odbc/reference/syntax/sqlgetinfo-function
「ODBC 2.5のSQLGetInfoでの情報型サポート」も参照してください。これらの情報型は、TimesTen ODBC 3.5ドライバによって引き続きサポートされています(記載のとおり、名前が一部変更されています)。
表10-9 TimesTenでの標準の情報型のサポート: SQLGetInfo (ODBC 3.5)
情報型 | 留意事項とTimesTenから返される正しい値 |
---|---|
|
0: 環境オブジェクトはヒープから割り当てられます。 |
|
|
|
0: |
|
|
|
|
|
0: SQL文のバッチはサポートされていません。 |
|
0: SQL文のバッチはサポートされていません。 |
|
0: 修飾子としてのカタログ名はサポートされていません。 ODBC 2.5の |
|
N: 修飾子としてのカタログ名はサポートされていません。 |
|
ODBC 2.5の |
|
"data store" ODBC 2.5の |
|
0: カタログはサポートされていません。 ODBC 2.5の |
|
ノート: TimesTenにはデフォルトの文字セットがないため、デフォルトの文字セットのデフォルトの照合は適用できません。 |
|
0: |
|
0: |
|
0: |
|
0: |
|
0: |
|
0: |
|
0: |
|
0: |
|
0: |
|
0: |
|
0: |
|
サポートされている句を判断するために、次のようになっています。
一時表を作成できることを指定するために、次のようになっています。
列制約を作成できることを指定するために、次のようになっています。
|
|
0: |
|
|
|
|
|
|
|
|
|
"Y": パラメータを記述できます。 |
|
|
|
ドライバ記述子ハンドルへのポインタ。 |
|
0: |
|
0: |
|
0: |
|
0: |
|
0: |
|
|
|
0: |
|
|
|
なし: 動的カーソルはサポートされていません。 |
|
なし: 動的カーソルはサポートされていません。 |
|
|
|
|
|
|
|
なし: |
|
|
|
"N" ODBC 2.5の |
|
なし: キーセット・カーソルはサポートされていません。 |
|
なし: キーセット・カーソルはサポートされていません。 |
|
「ODBC 3.5のTimesTen SQLキーワード」を参照してください。 |
|
0: 非同期モードでは同時にアクティブな文の数に制限はありません。 |
別名 |
0: 特定の最大長はありません。 ODBC 2.5の |
別名 |
0: ヒープから割り当てられ、同時実行性に対する制限はありません。 ODBC 2.5の |
別名 |
ODBC 2.5の |
別名 |
|
|
"N" |
別名 |
ODBC 2.5の |
|
|
|
|
|
|
|
"owner" ODBC 2.5の |
|
ODBC 2.5の |
|
|
|
なし: Datetimeスカラー関数はサポートされていません。 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
なし: 行値のコンストラクタ式はサポートされていません。 |
|
なし: 文字列スカラー関数はサポートされていません。 |
|
|
|
なし: ドライバはCLI標準に準拠していません。 |
|
|
|
|
|
|
|
ODBC 2.5の |
|
|
表10-10に、TimesTen固有の情報型を示します。
表10-10 TimesTenの情報型: SQLGetInfo
情報型 | データ型 | 説明 |
---|---|---|
|
|
システム障害やアプリケーション障害などが原因でデータベースが無効な状態にある場合は1を返します。そうでない場合は、0を返します。 ノート: エラー846やエラー994などの致命的なエラーは、TimesTenデータベースを無効にし、この項目を1に設定します。 |
|
|
データベースの文字セットの名前を返します。 |
|
|
データベースの文字セットのキャラクタの最大サイズをバイト単位で返します。 |
|
ビット・マスク |
プラットフォーム情報を示すビット・マスクを返します。64ビット・プラットフォームでは、ビット0の値は1です。ビット1は、ビッグエンディアンの場合は値1を、リトルエンディアンの場合は値0を持ちます。 |
|
|
レプリケーションが失敗した状態の場合は1を、そうでない場合は0を返します。 『Oracle TimesTen In-Memory Databaseレプリケーション・ガイド』のサブスクライバ障害を参照してください。 |
ODBC 3.5のTimesTen SQLキーワード
SQLGetInfo
コールでSQL_KEYWORDS
に返されるTimesTen SQLキーワードのリストは、TimesTen ODBC 3.5サポートでもODBC 2.5サポートの場合と同じです。
「ODBC 2.5のTimesTen SQLキーワード」を参照してください。
TimesTen予約語のリストとは異なります。『Oracle TimesTen In-Memory Database SQLリファレンス』の予約語を参照してください。