ODBC 仕様のサポート
PSQL の Open Database Connectivity(ODBC)仕様のサポートの概要
この章では PSQL の ODBC 仕様のサポートについて説明します。
PSQL で ODBC 構成オプションを設定する方法については、DSN のセットアップおよび接続文字列を参照してください。
ODBC 仕様のサポート
ODBC(Open Database Connectivity)とは、Microsoft によって開発された、データベース マネージメント システム(DBMS)にアクセスするための標準 API です。この標準は、長年にわたって進化し続けてきました。PSQLリレーショナル インターフェイスは、コア、レベル 1、およびレベル 2 のインターフェイス サポート レベルに対する ODBC v3.51 仕様をサポートしています(レベル 3 はサポート対象外です)。
ODBC インターフェイス サポートの例外
コア レベル
SQL_BEST_ROWID
リレーショナル インターフェイスでは、テーブル内の行を識別する最適な列セットとして固有のインデックスが使用されます。
IDENTITY 列のあるテーブルに新しい列を挿入した場合、リレーショナル インターフェイスは IDENTITY 列に割り当てられた値を返しません。IDENTITY 列の値は @@IDENTITY 変数を使用することによって判断できます。『SQL Engine Reference』の @@IDENTITY を参照してください。
レベル 2
以下はサポート対象外です。
ODBC API サポート
次の表は、リレーショナル インターフェイスによりサポートされる ODBC API 関数、および ODBC サポート レベルの一覧を示します。ODBC API の詳細については、Microsoft の ODBC ドキュメントを参照してください。
ODBC API サポートの例外
次のセクションには、ODBC API サポートの例外に関する詳細が記述されています。
SQLGetData
アプリケーションで SQLGetData を呼び出して SQL_C_NUMERIC 構造体にデータを返した場合、ODBC 標準では、SQL_DESC_SCALE フィールドはゼロに設定され、SQL_DESC_PRECISION フィールドにはドライバー定義の精度が使用されます。
PSQL は、メタデータに定義されている小数位およびドライバー定義の精度(桁数)の値を使用します。次の例を考えて見ましょう。この例では、小数位は 2 に設定されます。
CREATE TABLE testnum (col1 NUMERIC(10,2))
INSERT INTO testnum VALUES (10.34)
SELECT * FROM testnum
SELECT ステートメントは 10.00 ではなく 10.34 を返します。
SQLGetTypeInfo
SQLGetTypeInfo を使用すると、リレーショナル インターフェイスによって指定されたネイティブ データ型名(タイプ名)のリストが生成されます。たとえば、SQL_CHARCHARACTER に割り当てられます。CREATE TABLE ステートメントまたは ALTER TABLE ステートメント内の列のデータ型名、あるいはプロシージャのパラメーターや、プロシージャおよびトリガーで宣言された変数のデータ型名には、この関数から戻される名前を使用してください。
サポートされている ODBC データ型の一覧については、使用できるデータ型を参照してください。
SQLGetInfo
リレーショナル インターフェイスは SQL_DRIVER_VERSQL_DBMS_VER で同一の値を返します。このバージョン値は次の形式で返されます。
aa.bb.cccc ddd
この値は、次の表で説明されているように 4 つの構成要素として解釈できます。
次の表では、SQLGetInfo で一般的に返されるその他の値についてまとめています。値は例としてのみ挙げてあります。
SQLSpecialColumns
リレーショナル インターフェイスでは、テーブル内の行を一意に識別する最適な列セットとして固有のインデックスが使用されます。新しい行が挿入されたとき、リレーショナル インターフェイスは IDENTITY 列の値は返しません。IDENTITY 列の値は @@IDENTITY 変数を使用することによって判断できます。『SQL Engine Reference』の @@IDENTITY を参照してください。
ODBC 属性サポート
リレーショナル インターフェイスは ODBC v3.51 の属性サポートを提供していますが、次に挙げる例外があります。
接続属性サポート
次の表は、ODBC 接続属性サポートの例外を示します。
ステートメント属性のサポート
次の表は、ODBC ステートメント属性サポートの例外を示します。
ODBC 記述子フィールドのサポート
リレーショナル インターフェイスは ODBC v3.51 記述子フィールド サポートを提供していますが、次の例外があります。
記述子フィールドおよびビット数値
一部の記述子フィールドは ODBC のさまざまな SQLSet および SQLGet 関数を介して設定できますが、これらの関数が 64 ビット値対応に変更されている一方、それ以外の関数はまだ 32 ビット値対応であることに注意してください。64 ビット ODBC ドライバーを使用している場合、このようなフィールドを設定および取得する際には、適切なサイズの変数を使用するようにしてください。詳細については、Microsoft の ODBC ドキュメントを参照してください。
説明の要点は、SQL_ROWSET_SIZE は SQLGetStmtOption と SQLGetStmtAttr の両方でサポートされるということです。64 ビット ODBC ドライバーを使用し、SQLGetStmtOption または SQLGetStmtAttr を呼び出した場合、属性パラメーターが SQL_ROWSET_SIZE に設定されている場合には、*ValuePtr に 64 ビット値が返されます。
SQLSetStmtOption の各種オプション
このセクションでは、以下の SQLSetStmtOption の各種オプションに対する PSQL のサポートについて説明します。
次の表は、各オプションで有効な設定値を示します。