 |
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_CHAR
が CHARACTER
に割り当てられます。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_VER
と SQL_DBMS_VER
で同一の値を返します。このバージョン値は次の形式で返されます。
この値は、次の表で説明されているように 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 のサポートについて説明します。
- SQL_BIND_TYPE
- SQL_CONCURRENCY
- SQL_CURSOR_TYPE
- SQL_RETRIEVE_DATA
- SQL_ROWSET_SIZE
- SQL_USE_BOOKMARKS
次の表は、各オプションで有効な設定値を示します。
表 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 文法のサポート |
|