SQL Engine Reference (v11)

ODBC サポート

ODBC インターフェイスのサポート

リレーショナル インターフェイスは、コア、レベル 1、およびレベル 2 のインターフェイス サポート レベルに対する ODBC v3.51 仕様をサポートしています。

ODBC インターフェイス サポートの例外

コア レベル

SQL_BEST_ROWID

リレーショナル インターフェイスでは、テーブル内の行を識別する最適な列セットとして固有のインデックスが使用されます。

IDENTITY 列のあるテーブルに新しい列を挿入した場合、リレーショナル インターフェイスは IDENTITY 列に割り当てられた値を返しません。IDENTITY 列の値は @@IDENTITY 変数を使用することによって判断できます。@@IDENTITY を参照してください。

レベル 2

SQL_ROWVER

上記の SQL_BEST_ROWID を参照してください。

SQL_ATTR_LOGIN_TIMEOUT

サポートされていません

ODBC API サポート

次の表は、リレーショナル インターフェイスによりサポートされる ODBC API 関数、および ODBC サポート レベルの一覧を示します。

表 20 インターフェイスがサポートしている ODBC API 関数
ODBC 関数
ODBC サポート レベル
SQLAllocHandle
コア
SQLBindCol
コア
SQLBindParameter
コア
SQLBrowseConnect
レベル 1
SQLBulkOperations
レベル 1
SQLCancel
コア
SQLCloseCursor
コア
SQLColAttribute
コア
SQLColumnPrivileges
レベル 2
SQLColumns
コア
SQLConnect
コア
SQLCopyDesc
コア
SQLDataSources
コア
SQLDescribeCol
コア
SQLDescribeParam
レベル 2
SQLDisconnect
コア
SQLDriverConnect
コア
SQLDrivers
コア
SQLEndTran
コア
SQLExecDirect
コア
SQLExecute
コア
SQLExtendedFetch
コア
SQLFetch
コア
SQLFetchScroll
コア
SQLForeignKeys
レベル 2
SQLFreeHandle
コア
SQLFreeStmt
コア
SQLGetConnectAttr
コア
SQLGetCursorName
コア
SQLGetData
コア
SQLGetDescField
コア
SQLGetDescRec
コア
SQLGetDiagField
コア
SQLGetDiagRec
コア
SQLGetEnvAttr
コア
SQLGetFunctions
コア
SQLGetInfo
コア
SQLGetStmtAttr
コア
SQLGetTypeInfo
コア
SQLMoreResults
レベル 1
SQLNativeSql
コア
SQLNumParams
コア
SQLNumResultCols
コア
SQLParamData
コア
SQLPrepare
コア
SQLPrimaryKeys
レベル 1
SQLProcedureColumns
レベル 1
SQLProcedures
レベル 1
SQLPutData
コア
SQLRowCount
コア
SQLSetConnectAttr
コア
SQLSetCursorName
コア
SQLSetDescField
コア
SQLSetDescRec
コア
SQLSetEnvAttr
コア
SQLSetPos
レベル 1
SQLSetStmtAttr
コア
SQLStatistics
コア
SQLTablePrivileges
レベル 2
SQLTables
コア

ODBC API サポートの例外

次のセクションには、ODBC API サポートの例外に関する詳細が記述されています。

SQLGetTypeInfo

SQLGetTypeInfo を使用すると、リレーショナル インターフェイスによって指定されたネイティブ データ型名(タイプ名)のリストが生成されます。たとえば、SQL_CHARCHARACTER に割り当てられます。CREATE TABLE ステートメントまたは ALTER TABLE ステートメント内の列のデータ型名、あるいはプロシージャのパラメーターや、プロシージャおよびトリガーで宣言された変数のデータ型名には、この関数から戻される名前を使用してください。

サポートされている ODBC データ型の一覧については、「Pervasive PSQL データ型と対応する ODBC データ型」を参照してください。

SQLSpecialColumns

リレーショナル インターフェイスでは、テーブル内の行を一意に識別する最適な列セットとして固有のインデックスが使用されます。新しい行が挿入されたとき、リレーショナル インターフェイスは IDENTITY 列の値は返しません。IDENTITY 列の値は @@IDENTITY 変数を使用することによって判断できます。@@IDENTITY を参照してください。

SQLGetData

アプリケーションで SQLGetData を呼び出して SQL_C_NUMERIC 構造体にデータを返した場合、ODBC 標準では、SQL_DESC_SCALE フィールドはゼロに設定され、SQL_DESC_PRECISION フィールドにはドライバー定義の精度が使用されます。

Pervasive PSQL は、メタデータに定義されている小数位およびドライバー定義の精度(桁数)の値を使用します。次の例を考えて見ましょう。この例では、小数位は 2 に設定されます。

CREATE TABLE testnum (col1 NUMERIC(10,2)) 
INSERT INTO testnum VALUES (10.34) 
SELECT * FROM testnum 

SELECT ステートメントは 10.00 ではなく 10.34 を返します。

SQLGetInfo

リレーショナル インターフェイスは、SQL_DRIVER_VERSQL_DBMS_VER で同一の値を返します。このバージョン値は次の形式で返されます。

aa.bb.cccc ddd 

この値は、次の表で説明されているように 4 つの構成要素として解釈できます。

要素
説明
aa
メジャー バージョン
Pervasive PSQL データベース エンジンのメジャー バージョン。
bb
マイナー バージョン
Pervasive PSQL データベース エンジンのマイナー バージョン。一般に、サービス パックで更新されます。
cccc
ビルド番号
ビルドの詳細。Pervasive Software がリリース版を生成した時点のビルド回数を示すことによって、そのリリースを特定します。
ddd
ポイント ビルド
ビルドのマイナー アップデート。ビルド番号とポイント ビルドによって、特定の時点で作成された一意な製品リリースを識別できます。

次の表では、SQLGetInfo で一般的に返されるその他の値についてまとめています。値は例としてのみ挙げてあります。

項目
値の例
SQL_DRIVER_NAME
W3ODBCCI.DLL
SQL_DRIVER_VER
10.00.0147 012
SQL_DRIVER_ODBC_VER
03.51
SQL_DBMS_NAME
Pervasive.SQL
SQL_DBMS_VER
10.00.0147 012
SQL_ODBC_VER
03.52.0000
SQL_ODBC_API_CONFORMANCE
SQL_OAC_LEVEL2
SQL_ODBC_INTERFACE_CONFORMANCE
SQL_OIC_LEVEL2

ODBC 属性サポート

リレーショナル インターフェイスは ODBC v3.51 の属性サポートを提供していますが、次の例外があります。

ODBC 属性サポートの例外

ステートメント属性のサポート

次の表は、ODBC ステートメント属性サポートの例外を示します。

表 21 ODBC ステートメント属性サポートの例外
fOption(数値)
解説
SQL_ATTR_QUERY_TIMEOUT(0)
SQLSetStmtAttr および SQLSetConnectAttr を介してサポートされます。SQLExecDirect、SQLExecute、SQLFetch および SQLExtendedFetch にのみ適用できます。DDL ステートメントに適用してはいけません。
SQL_ATTR_METADATA_ID(10014)
デフォルト値は SQL_FALSE です。Pervasive ODBC ドライバーは、この属性値を SQL_TRUE に設定することを許可していません。
SQL_ATTR_ENABLE_AUTO_IPD(15)
デフォルト値は SQL_TRUE です。Pervasive ODBC ドライバーは、この属性値を SQL_FALSE に設定することを許可していません。
SQL_ATTR_PARAM_BIND_TYPE(18)
SQL_PARAM_BIND_BY_COLUMN のみサポートされます。

接続属性サポート

次の表は、ODBC 接続属性サポートの例外を示します。

表 22 ODBC 接続属性サポートの例外
fOption
解説
SQL_ATTR_AUTO_IPD
デフォルト値は SQL_TRUE です。Pervasive ODBC ドライバーは、この属性値を SQL_FALSE に設定することを許可していません。
SQL_ATTR_METADATA_ID
デフォルト値は SQL_FALSE です。Pervasive ODBC ドライバーは、この属性値を SQL_TRUE に設定することを許可していません。
SQL_ATTR_CONNECTION_TIMEOUT
デフォルト値は 0 です。それ以外の値はサポートされていません。

ODBC 記述子フィールドのサポート

リレーショナル インターフェイスは ODBC v3.51 の記述子フィールド サポートを提供していますが、次の例外があります。

ODBC 記述子サポートの例外

次の表は、ODBC 記述子フィールド サポートの例外を示します。

表 23 ODBC 記述子サポートの例外
fOption
解説
SQL_DESC_BIND_TYPE
アプリケーション パラメーター記述子(APD)では、SQL_BIND_BY_COLUMN のみサポートされます。
SQL_DESC_ROWVER

記述子フィールドおよびビット数値

一部の記述子フィールドは ODBC のさまざまな SQLSet および SQLGet 関数を介して設定できますが、これらの関数が 64 ビット値対応に変更されている一方、それ以外の関数はまだ 32 ビット値対応であることに注意してください。64 ビット ODBC ドライバーを使用している場合、このようなフィールドを設定および取得する際には、適切なサイズの変数を使用するようにしてください。詳細については、Microsoft の ODBC ドキュメントを参照してください。
特に http://msdn.microsoft.com/en-us/library/ms716287%28VS.85%29.aspx(英語)をご覧ください。

説明の要点は、SQL_ROWSET_SIZE は SQLGetStmtOption と SQLGetStmtAttr の両方でサポートされるということです。64 ビット ODBC ドライバーを使用し、SQLGetStmtOption または SQLGetStmtAttr を呼び出した場合、属性パラメーターが SQL_ROWSET_SIZE に設定されている場合には、*ValuePtr に 64 ビット値が返されます。

SQLSetStmtOption の各種オプション

このセクションでは、以下の SQLSetStmtOption の各種オプションに対する Pervasive PSQL のサポートについて説明します。

次の表は、各オプションで有効な設定値を示します。

表 24 アクセス方法ごとにサポートされるバインド、並行、およびカーソルのタイプ
 
ODBC カーソル ライブラリ
現在の Pervasive PSQL ODBC ドライバー
SQL_BIND_TYPE
SQL_BIND_BY_COLUMN または行方向のバインドを示す長さ
SQL_BIND_BY_COLUMN または行方向のバインドを示す長さ
SQL_CONCURRENCY
SQL_CONCUR_READ_ONLY または SQL_CONCUR_ VALUES
(SQL_CONCUR_ROWVER の場合、ライブラリは SQL_CONCUR_VALUES を代用し、SQL_SUCCESS_WITH_INFO を返して、SQLSTATE に 01S02 を設定する)
(SQL_CONCUR_LOCK の場合、ライブラリは SQLSTATE = S1C00 の SQL_ERROR を返す)
SQL_CURSOR_FORWARD_ONLY または SQL_CURSOR_STATIC
(SQL_CURSOR_KEYSET_DRIVEN および SQL_CURSOR_DYNAMIC の場合、ライブラリは SQL_CURSOR_STATIC を代用し、SQL_SUCCESS_WITH_INFO を返して、SQLSTATE に 01S02 を設定する)
SQL_CURSOR_TYPE
SQL_CURSOR_FORWARD_ONLY または SQL_CURSOR_STATIC
(SQL_CURSOR_KEYSET_DRIVEN および SQL_CURSOR_DYNAMIC の場合、ライブラリは SQL_CURSOR_STATIC を代用し、SQL_SUCCESS_WITH_INFO を返して、SQLSTATE に 01S02 を設定する)
SQL_CURSOR_FORWARD_ONLY または SQL_CURSOR_STATIC または SQL_CURSOR_DYNAMIC
(SQL_CURSOR_KEYSET_DRIVEN の場合、ライブラリは SQL_CURSOR_STATIC を代用し、SQL_SUCCESS_WITH_INFO を返して、SQLSTATE に 01S02 を設定する)

表 25 アクセス方法ごとにサポートされる行セットのサイズおよびブックマーク
 
ODBC カーソル ライブラリ
現在の Pervasive PSQL ODBC ドライバー
SQL_RETRIEVE_DATA
SQL_RD_ON
(SQL_RD_OFF の場合、ライブラリは SQLSTATE = S1C00 の SQL_ERROR を返す)
SQL_RD_ON または SQL_RD_OFF
SQL_ROWSET_SIZE
行セットの行数を示す値。これは最大行セット サイズを限度とします。
行セットの行数を示す値。これは最大行セット サイズを限度とします。
SQL_USE_BOOKMARKS
SQL_UB_ON または SQL_UB_OFF
SQL_UB_ON または SQL_UB_OFF


データ ソース名接続文字列キーワード

SQL 文法のサポート