前へCOBSQL エラーメッセージ 埋め込み SQL 文次へ

付録 C: DataDirect ODBC ドライバ

C.1 UNIX 環境

サポートされる UNIX プラットフォームについては、Micro Focus にお問い合わせください。

C.1.1 システム情報ファイル (.odbc.ini)

UNIX 環境には、ODBC データベースアドミニストレータがありません。データソースを設定するには、 システム情報ファイル、プレーンテキストファイル (通常はユーザの $HOME ディレクトリにあり、一般的に .odbc.ini と呼ばれる) を編集する必要があります。 このファイルは、任意のテキストエディタを使って、各ドライバの『データソースの設定および接続』に説明されているデータソースを定義した状態で保存されます。 サンプルファイル .odbc.ini は、ドライバのインストールディレクトリにあります。

データベースドライバの UNIX サポートにより、システム管理者が管理できる集中化されたシステム情報ファイルを使用できます。集中化されたファイルの完全修飾パス名を示すように環境変数 ODBCINI を設定することによって、 そのファイルを使用できます。

環境変数、ODBCINI を次のように設定します。

C シェル

setenv ODBCINI /opt/odbc/system_odbc.ini

Bourne シェルおよび Korn シェル

ODBCINI=/opt/odbc/system_odbc.ini;export ODBCINI

システム情報ファイルの場所の検索順序は次のとおりです。

  1. ODBCINI のチェック

  2. .odbc.ini の $HOME のチェック

InstallDir キーワードを含むシステム情報ファイルには、[ODBC] セクションを入れる必要があります。 このキーワードの値は、/lib および /messages ディレクトリを含むディレクトリのパスにしなければなりません。 たとえば、デフォルトのインストールディレクトリを選択する場合、[ODBC] 節に次の行を入れる必要があります。

InstallDir=/opt/odbc

C.1.1.1 システム情報ファイルの例 (Solaris)

次の例で、xx はドライバ番号を表します。

[ODBC Data Sources]
   Oracle7=Sample Oracle dsn
   dBase=Sample dBASE dsn
   Sybase=Sample Sybase dsn
   Informix=Sample Infofrmix dsn
   OpenIngres=Sample OpenIngres dsn
   DB2=Sample DB2 dsn
   Text=Sample Text file dsn 

[dBase]
   Driver=/opt/odbc/lib/ivdbfxx.so
   Description=dBase
   Database=/opt/odbc/demo 

[Sybase]
   Driver=/opt/odbc/lib/ivsybxx.so
   Description=Sybase
   Database=odbc
   ServerName=SYBASE
   LogonID=odbc01
   Password=odbc01
   OptimizePrepare=2
   SelectMethod=1 

[Oracle7]
   Driver=/opt/odbc/lib/ivor7xx.so
   Description=Oracle7
   ServerName=oraclehost
   LogonID=odbc01
   Password=odbc01

[Informix]
   Driver=/opt/odbc/lib/ivinfxx.so
   Description=Informix7
   Database=odbc
   HostName=informixhost
   LogonID=odbc01
   Password=odbc01  
 
[DB2]
   Driver=/opt/odbc/lib/ivdb2xx.so
   Description=DB2
   Database=ODBC 

[OpenIngres]
   Driver=/opt/odbc/lib/ivoingxx.so
   ServerName=ingreshost
   Database=odbc
   LogonID=odbc01
   Password=odbc01 

[Text]
   Driver=/opt/odbc/lib/ivtxtxx.so
   Description=Text driver
   Database=/opt/odbc/demo 

[ODBC]
   Trace=0
   TraceFile=odbctrace.out
   TraceDll=/opt/odbc/lib/odbctrac.so
   InstallDir=/opt/odbc 

C.1.2 環境変数

Connect ODBC ドライバでは、環境変数を設定する必要があります。

C.1.2.1 環境変数 (必須)

ODBC ホームディレクトリにある適切なシェルスクリプトを実行することによって、ほとんどの変数を設定できます。

ODBC 対応アプリケーションを使用する前に次のコマンドを実行して、使用している環境を初期化します。

C シェル (および関連シェル)

% source odbc.csh

Bourne シェル (および関連シェル)

$ . odbc.sh

これらのスクリプトを実行すると、適切なライブラリ検索パスの環境変数 (Solaris の場合には LD_LIBRARY_PATH、 HP/UX の場合には SHLIB_PATH、AIX の場合には LIBPATH) が設定されます。

ライブラリ検索パスの環境変数は、実行時に ODBC コアコンポーネントおよび ODBC ドライバを配置できるように設定する必要があります。

C.1.2.2 環境変数 (オプション)

多くの Connect ODBC ドライバには、そのドライバで使用されるデータベースのクライアントコンポーネントに応じて環境変数を設定する必要があります。 各ドライバの要件に関する詳細情報については、各ドライバに関する『システム環境』を参照してください。

ODBCINI は、すべての Connect ODBC ドライバを認識する省略可能な環境変数です。 ODBCINI を使用してデフォルトファイル以外のシステム情報ファイルを配置します。ODBCINI の詳細については、 『システム情報ファイル (.odbc.ini)』を参照してください。

C.1.3 2 バイト文字セットの使用

Connect ODBC ドライバでは、2 バイト文字セットを使用できます。別の文字セットを明示的に示す場合以外は通常、デフォルトのロケール、C によって定義される文字セットを使用します。 デフォルトのロケール、C は、ISO 8859-1 が有効な文字に限定された 7 ビット ASCII 文字セットに対応します。ロケールを別の文字セットに設定するには、次の手順に従ってください。

  1. 2 バイト文字セットを使用するアプリケーションの開始直後に次の行を追加します。
    setlocale (LC_ALL, "");
    

    この行は、標準 UNIX 関数です。X/Open 準拠の文字処理関数で使用される標準 UNIX 関数として、環境変数 LANG によって示される文字セットが選択されます。この行を追加しない場合、または LANG を設定しない、あるいは NULL に設定する場合に、デフォルトのロケール、C が使用されます。

  2. LANG 環境変数に適切な文字セットを設定します。 UNIX コマンド、locale -a を使用して、システムでサポートされているすべての文字セットを表示できます。

詳細については、locale および setlocale の MAN ページを参照してください。

C.1.3.1 ivtestlib ツール

UNIX 環境では、設定問題 (環境変数が正確に設定されていない、DBMS クライアントコンポーネントが足りないなど) の診断に役立つ ivtestlib ツールが提供されます。 このコマンドを実行すると、特定の ODBC ドライバのロード、およびロードが失敗した場合の有効なすべてのエラー情報の印刷が行われます。

たとえば、HP-UX では、/opt/odbc にドライバをインストールする場合には、次のコマンドを使用します。

ivtestlib /opt/odbc/lib/ivinfxx.sl

INFORMIX ドライバがロードされます (xx は、ドライバの番号を表します)。 ドライバをロードできない場合には、ivtestlib により原因を示すエラーメッセージが返されます。


注: Solaris および AIX では、ivtestlib に対してドライバの完全パスを指定する必要はありません。 ただし、HP-UX 版の ivtestlib には完全パスが必要です。


C.1.4 文字コード変換

Micro Focus により、変換ライブラリのコーディング用のフレームワークをサポートする、文字コード変換機能のサンプルが提供されています。

文字コード変換を実行するシステム情報ファイルのデータソースに、TranslationSharedLibrary キーワードを追加する必要があります。 TranslationOption キーワードの追加は省略可能です。

キーワード

定義

TranslationSharedLibrary

変換ライブラリの完全パス

TranslationOption

32 ビット変換オプションの ASCII 表記

詳細については、DataDirect Connect ODBC のマニュアルを参照してください。

C.2 Connect ODBC DB2 ドライバ

C.2.1 システム環境

クライアント側には、次のソフトウェアが必要です。

Solaris

HP-UX

AIX

サーバ側には、次のソフトウェアが必要です。

C.2.2 DB2 バインドおよび権限

DB2 にアクセスするには、このセクションで説明されているプロセスに従って、 DataDirect バインドファイルをバインドし、権限を付与する必要があります。

シェルプロンプトで db2 と入力し、DB2 コマンド行プロセッサに入ります。


注: DB2 コマンドプロセッサのプロンプトは、db2=> です。


DB2 コマンド行プロセッサ内では、最初の手順として、次の構文を使用して DB2 データベースに接続します。

db2=> CONNECT TO <database_name> USER <userid> 
          USING <password>

C.2.2.1 バインド

次の手順では、DataDirect SQL ファイルを DB2 データベースにバインドします。 インストール内容に基づいて BIND コマンドで特定のオプションの使用を選択できます。 BIND オプションの詳細リストについては、DB2 マニュアルセット にある『Command Reference』マニュアルを参照してください。 DataDirect SQL ファイルをバインドするには、次のセクションで示すコマンドを入力してください。 DB2 コマンド行プロセッサを終了するには、動詞 quit を入力してください。

Solaris

db2=> BIND iscsso.BND blocking all grant public
db2=> BIND isrrso.BND blocking all grant public
db2=> BIND isurso.BND blocking all grant public
db2=> BIND iscswhso.BND blocking all grant public
db2=> BIND isrrwhso.BND blocking all grant public
db2=> BIND isurwhso.BND blocking all grant public

HP-UX

db2=> BIND iscshp.BND blocking all grant public
db2=> BIND isrrhp.BND blocking all grant public
db2=> BIND isurhp.BND blocking all grant public
db2=> BIND iscswhhp.BND blocking all grant public
db2=> BIND isrrwhhp.BND blocking all grant public
db2=> BIND isurwhhp.BND blocking all grant public

AIX

db2=> BIND iscsax.BND blocking all grant public
db2=> BIND isrrax.BND blocking all grant public
db2=> BIND isurax.BND blocking all grant public
db2=> BIND iscswhax.BND blocking all grant public
db2=> BIND isrrwhax.BND blocking all grant public
db2=> BIND isurwhax.BND blocking all grant public

C.2.3 データソースの設定および接続

データソースを設定するには、下記の表に示されているデータソース定義を使用する必要があります。 システム情報ファイルの設定に関する詳細については、『UNIX 環境』を参照してください。

アプリケーションから接続文字列を使ってデータソースに接続する場合には、 データソース名を指定する必要があります。データソースの指定により、システム情報ファイルでドライバにより使われるセクションが決定され、 そこに記述されているデフォルトの接続情報がドライバによって読み取られます。 また、システム情報ファイルに記録されているデフォルトの接続情報は、接続文字列で attribute=value 対で指定して上書きすることができます。 ただし、接続文字列で指定した情報は、システム情報ファイルに優先して使用されるだけで、 実際にシステム情報ファイルに書き込まれることはありません。

接続文字列では、フルネームまたは省略名で指定できます。 接続文字列の書式は次のとおりです。

DSN=data_source_name[;attribute=value[;attribute=value]...]

DB2 の接続文字列の例

DSN=DB22 TABLES;DB=PAYROLL;UID=JOHN;PWD=XYZZY;GRP=ACCTNG

次の表は、各種属性のフルネームと省略名、および属性の内容の一覧です。

この表にあるデフォルト値は、接続文字列やシステム情報ファイルのデータソース定義に値が指定されていない場合に使用される初期値です。データソースの設定時に属性の値を指定した場合は、その値がデフォルト値となります。

属性

説明

ApplicationUsing
Threads (AUT)

ApplicationUsingThreads={0 | 1}。アプリケーションがマルチスレッドかどうかに応じて値を設定します。 デフォルト 1 を設定すると、ドライバがマルチアプリケーション対応となります。 シングルスレッドのアプリケーションの場合は、0 を設定します。これにより、 ODBC スレッド保護標準に関連する処理が行われなくなります。

CursorBehavior (CB)

CursorBehavior={0 | 1}。各トランザクション終了後にカーソルを保持するか、閉じるかを決定します。 1 (保持する) またはデフォルト値 0 (閉じる) を指定できます。1 を設定すると、 カーソルをトランザクションが終了した時点の位置に保持することができます。 ただし、カーソルを保持すると、データベースのパフォーマンスに影響を及ぼす可能性があります。

SQL/DS では、この属性は無効です。

1 を設定すると、SQLGetInfo (SQL_CURSOR_COMMIT_BEHAVIOR) から SQL_CB_PRESERVE が返されます。 ただし、SELECT 文および PREPARE された UPDATE...WHERE CURRENT OF CURSOR 文または DELETE...WHERE CURRENT OF CURSOR 文のみはトランザクション終了時に保存されます。PREPARE されたその他すべての文は閉じられ、削除されます。

Database (DB)

接続するデータベースの名前です。

DataSourceName (DSN)

システム情報ファイルに保管されるデータソース名です。"Accounting"、"-DB2--Serv1" のように半角英数字で入力します。

Groups (GRP)

アクセス可能な表を決定する値です。システム管理者がユーザをユーザの "グループ" に配置し、グループ全体に表をアクセスする権限を与えます。 この場合、属する任意のグループ名 (コンマで区切る)を Groups に設定します。 また、ALL を設定すると、表にアクセスできない場合でもアプリケーションですべての表名を表示することができます。

LogonID (UID)

DB2 データベースの接続に使用するデフォルトのログオン ID です。 データベースのセキュリティが有効な場合のみ必要です。 データベースのセキュリティが有効な場合は、システム管理者に連絡して、自分のログオン ID を取得してください。

UNIX 上の DB2 Common Server では、通常の UNIX セキュリティが使用されます。 LogonID 値は、各自の UNIX ユーザ ID です。

Password (PWD)

パスワードです。

Sysibm (SI)

ほとんどの DB2 システムでは、SYSIBM がカタログシステム表の所有者となっています。 システム表の読み取りアクセス権限がある場合には、このオプションを変更する必要はありません。

読み取りアクセス権限がない場合には、システム管理者が別のアカウントでシステム表のビューを作成し、 そのビューの使用をユーザに許可する必要があります。 この場合、システム表のビューを所有するアカウントの権限 ID を指定します。

C.2.4 データ型

次の表は、DB2 データ型と標準 ODBC データ型との対応関係を示したものです。

DB2

ODBC

Char

SQL_CHAR

Char() for Bit Data

SQL_BINARY

Date

SQL_TYPE_DATE

Decimal

SQL_DECIMAL

Float

SQL_DOUBLE

Integer

SQL_INTEGER

Long Varchar

SQL_LONGVARCHAR

Long Varchar for Bit Data

SQL_LONGVARBINARY

Smallint

SQL_SMALLINT

Time

SQL_TYPE_TIME

Timestamp

SQL_TYPE_TIMESTAMP

Varchar

SQL_VARCHAR

Varchar() for Bit Data

SQL_VARBINARY


注: Graphic、Vargraphic、および Long Vargraphic のデータ型はサポートされていません。


C.2.5 サポートする分離レベルとロックレベル

DB2 ドライバは、分離レベル 0 (コミット前に読み出し)、1 (コミット後に読み出し)、 2 (繰り返し読み出し) をサポートしています。また、レコードレベルのロックもサポートしています。 分離とロックの詳細については、『Connect ODBC リファレンス』の『付録 D ロックレベルと分離レベル 』 を参照してください。

C.2.6 ODBC 対応レベル

DB2 ドライバがサポートしている関数については、『Connect ODBC リファレンス』の『付録 C ODBC API 関数とスカラ関数』に説明されています。また、次の X/Open 関数もサポートされています。

また、基本 SQL 文法がサポートされています。

C.2.7 接続形態と文の数

DB2 データベースシステムは、単一接続、および各接続ごとの複数の文の実行をサポートしています。

C.3 Connect ODBC dBASE ドライバ

C.3.1 システム環境

dBASE ドライバは、UNIX 環境で dBASE IV および V をサポートしています。

dBASE ドライバは、dBASE と互換性のあるファイルを使用して SQL 文を直接実行します。 よって、それらのファイルにアクセスするために dBASE 製品を使用する必要はありません。

dBASE ドライバのファイル名については、DataDirect 製品に添付されている README ファイル を参照してください。

C.3.2 UNIX プラットフォームでのインデックス属性の定義

dBASE のインデックスファイルには、データベースファイルにある各インデックスのインデックスタグが含まれています。 そのタグを固有の属性としてマーキングすることができます。つまり、ドライバはインデックスタグを定義する列に重複した値がないかを 確認します。ただし、dBASE 製品または FoxPro 製品には、固有の属性がサポートされていません。 固有の属性を設定および認識するには、DataDirect dBASE ドライバの拡張機能を使用します。 DataDirect dBASE ドライバに、インデックスタグが固有であることを通知する必要があります。これにより、そのドライバを使って作成された固有のインデックスに設定する必要はありません。 そのドライバを使って作成されていないファイルを使用する場合には、次に説明されているように固有のインデックスタグを定義する必要があります。

データベースおよびインデックスファイルが配置されたディレクトリでは、vi などの任意のプレーンテキストエディタ を使用して、QEDBF.INI を次のように定義または編集します。

  1. データベースファイルの名前 filename の場所に [filename] 節を作成します。 大文字/小文字を区別して入力し、ファイルの拡張子を付けます。

  2. [filename] 節では、ファイルの固有インデックスの数 (NUMUNIQUE=) およびインデックスの仕様 (UNIQUE#=index_filename,index_tag) を指定します。 index_tag を決定するには、ODBC 関数 SQLStatistics を呼び出し、INDEX_NAME 結果の列を調べます。

    たとえば、accts.dbf 表に 2 つの固有インデックスを定義するには、 QEDBF.INI を次のように定義します。

    [accts.dbf]
    
    NUMUNIQUE=2
    UNIQUE0=accts.mdx,ACCT_NAME
    UNIQUE1=accts.mdx,ACCT_ID
    

C.3.3 データソースの設定および接続

データソースを設定するには、下記の表に示されているデータソース定義を使用する必要があります。 システム情報ファイルの設定に関する詳細については、『UNIX 環境』を参照してください。

アプリケーションから接続文字列を使ってデータソースに接続する場合には、 データソース名を指定する必要があります。データソースの指定により、システム情報ファイルでドライバにより使われるセクションが決定され、 そこに記述されているデフォルトの接続情報がドライバによって読み取られます。 また、システム情報ファイルに記録されているデフォルトの接続情報は、接続文字列で attribute=value のように指定して上書きすることができます。 ただし、接続文字列で指定した情報は、システム情報ファイルに優先して使用されるだけで、 実際にシステム情報ファイルに書き込まれることはありません。

接続文字列では、フルネームまたは省略名で指定できます。 接続文字列の書式は次のとおりです。

DSN=data_source_name[;attribute=value[;attribute=value]...]

dBASE の接続文字列の例

DSN=DBASE FILES;LCK=NONE;IS=0

次の表は、各種属性のフルネームと省略名、および属性の内容の一覧です。システム情報ファイルでは、属性のフルネームのみが使用されます。

この表にあるデフォルト値は、接続文字列やシステム情報ファイルのデータソース定義に値が指定されていない場合に使用される初期値です。データソースの設定時に属性の値を指定した場合は、その値がデフォルト値となります。

属性

説明

ApplicationUsing
Threads (AUT)

ApplicationUsingThreads={0 | 1}。アプリケーションがマルチスレッドかどうかに応じて値を設定します。 デフォルト 1 を設定すると、ドライバがマルチアプリケーション対応となります。シングルスレッドのアプリケーションの場合は、0 を設定します。これにより、 ODBC スレッド保護標準に関連する処理が行われなくなります。

CacheSize (CSZ)

データベースのレコードのキャッシュサイズで、64KB を 1 (ブロック) として指定します。この値が大きいほど、パフォーマンスが向上します。指定可能な最大値は、 システムメモリにより異なります。このサイズが 0 より大きく設定された状態で一度開いたデータを再び表示させる場合は、 他のユーザにより行われた更新は、再度 SELECT 文を実行しなければ検出できません。デフォルト値は 4 (4×64=256KB) です。

CreateType (CT)

CreateType={dBASE4 | dBASE5 | FoxPro30}。CREATE TABLE 文または CREATE INDEX 文を使って作成される表またはインデックスのタイプです。デフォルト値は dBASE5 です。

Database (DB)

dBASE ファイルが格納されているディレクトリを指定します。

DataFileExtension (DFE)

データファイルの拡張子として使う文字を 3 文字以内で指定します。 デフォルト値は DBF です。MDX、CDX などのドライバですでに使用されている拡張子を指定することはできません。 ここで指定した文字列が、すべての CREATE TABLE 文で使われます。 CREATE TABLE 文の実行時に、その文中のデータファイルの拡張子が、ここで指定した文字列と異なる場合はエラーが発生します。

SELECT、INSERT などのその他の SQL 文では、この属性で指定した文字列とは異なる拡張子を指定できます。 拡張子を指定しない場合は、DataFileExtension の値が使用されます。

DataSourceName
(DSN)

システム情報ファイルの dBASE データソース設定を示す文字列です。 "Accounting"、"dBASE Files" のように半角英数字で指定します。

ExtensionCase (EC)

ExtensionCase={LOWER | UPPER}。この属性では、ファイル拡張子に使用する大文字/小文字を指定します。 Lower を設定すると、小文字の拡張子が使用されます。 Upper (デフォルト値) を設定すると、大文字の拡張子が使用されます。

FileOpenCache (FOC)

キャッシュに対して開くことができる使用ファイルの最大数を指定する値です。 4 を設定すると、ユーザが 4 つの表を開いた後、 それらの表を閉じても実際には閉じられません。つまり、4 つのファイルが ドライバにより、開かれたままの状態で保持されるため、これらのいずれかに対してクエリーが実行されたときに、もう一度表を開く必要がありません。 したがって、この属性を使用すると、パフォーマンスが向上します。 ただし、キャッシュされているファイル (表) を、ロックとともに開こうとすると、 ロックコンフリクトが起こる可能性があります。デフォルト値は 0 です。

IntlSort (IS)

IntlSort={0 | 1}。この属性では、ORDER BY 節がある SELECT 文が実行された場合のレコードの 出力順を決定します。0 (デフォルト) を設定すると、ASCII ソート順が適用され、 大文字が小文字に優先してソートが行われます。たとえば、 "A, b, C" をソートすると、"A, C, b" と並べられます。

1 を設定すると、使用しているオペレーティングシステムの規則に従って、レコードがソートされます。 この場合は、"A, b, C" のように必ずアルファベット順に並べられ、大文字と小文字は区別されません。 記号やその他の文字種の詳細については、オペレーティングシステムのマニュアルを参照してください。

LockCompatibility (LCOMP)

LockCompatibility={Q+E | Q+EVirtual | dBASE | Clipper |
Fox}。dBASE 表に使用されるロック方法です。

  • Q+E を設定すると、レコードによって占有される実際のバイト数で配置されるロックが設定されます。 データベースの読み取りおよび書き込みが可能な dBASE ドライバを使用するアプリケーションのみに適用されます。 他のアプリケーションの場合、表が完全にロックされます (つまり、 他のレコードを読み取ることもできません)。このロックは、 Q+E 製品の以前のバージョンと互換性があります。

  • Q+EVirtual を設定すると、物理的なファイル終わりを越えたバイト数で配置されたロックが設定されます。 Q+EVirtual は、Q+E と同じ意味ですが、他のアプリケーションで表を開き、データを読み取ることはできません。

    dBASE ロックによる Q+E ロック方法を使用すると、INSERT および UPDATE では、Q+E の設定により各インデックスタグがロックされ、 dBASE の設定によりインデックス全体がロックされます。

  • dBASE を設定すると、 Borland と互換可能なロックが設定されます。これがデフォルト値です。

  • Clipper を設定すると、 Clipper と互換可能なロックが設定されます。

  • LockCompatibility=Fox を設定すると、FoxPro と互換可能なロックが設定されます。

dBASE ドライバを使ったアプリケーションから表にアクセスしている場合、 使用しているロック方法が Create Type と一致している必要はありません。 ただし、1 つのアプリケーションで dBASE ドライバを使用している状態で 2 つのアプリケーションから表にアクセスしている場合には、 そのロック方法を、dBASE ドライバを使用していないアプリケーションに設定します。たとえば、 FoxPro 表を開くために Fox を設定する必要はありません。ただし、同じ表のセットで dBASE ドライバを使用したアプリケーションと FoxPro アプリケーションを同時に使用している場合は、データが破壊されないように Fox を設定します。

Locking (LCK)

Locking={NONE | RECORD | FILE}。この属性では、データベースの表のロックレベルを決定します。

NONE を設定すると、パフォーマンスは最適となりますが、シングルユーザ環境に限定されます。

RECORD を設定すると、文により影響を受けるレコードのみがロックされます。この属性がデフォルト値です。

FILE を設定すると、表のすべてのレコードがロックされます。

ModifySQL (MS)

ModifySQL={0 | 1}。この属性では、Micro Focus 製品の以前のバージョンとバックワード互換性を保持することができます。 また、ODBC 仕様に対応するように SQL 文を変更する、または dBASE に SQL 文を直接渡すかを決定します。1 を設定すると、ドライバで ODBC 仕様に対応するように SQL 文を変更します。 0 を設定すると、以前のバージョンのドライバで見つかった SQL 文が認識されます。デフォルト値は 1 です。

UltraSafeCommit (USF)

UltraSafeCommit={0 | 1}。この属性では、ファイルキャッシュをフラッシュする時点を設定します。1 を設定すると、 各コミット後にディレクトリ項目が更新されます。ただし、パフォーマンスは低下します。 0 (デフォルト値) を設定すると、ファイルが閉じたときにディレクトリ項目が更新されます。 この場合、ファイルを閉じる前にマシンがクラッシュすると、新たに挿入されたレコードが消失する原因となります。

UseLongNames (ULN)

UseLongNames={0 | 1}。この属性では、表名にファイル名のフルネームを使用するかどうかを設定します。 デフォルト 0 を設定すると、ファイル名のフルネームは使用されません。 1 を設定すると、ファイル名のフルネームが使用されます。 表名の最大長は、実行している環境により異なります。

UseLongQualifiers (ULQ)

UseLongQualifiers={0 | 1}。この属性では、表の識別子にロングパス名を使用するかどうかを設定します。 デフォルト 0 を設定すると、ロングパス名は使用されず、パス名の最大長は 128 文字に制限されます。 1 を設定すると、ロングパス名 (最大 255 文字) が使用されます。

C.3.4 データ型

次の表は、dBASE データ型と標準 ODBC データ型との対応関係を示したものです。 dBASE データ型は、CREATE TABLE 文で使用できます。 CREATE TABLE 文の構文については、『Connect ODBC リファレンス』の『付録 A フラットファイルドライバと SQL 文』を参照してください。

dBASE

ODBC

Binary1

SQL_LONGVARBINARY

Char2

SQL_CHAR

Date

SQL_TYPE_DATE

Float

SQL_DECIMAL

General1

SQL_LONGVARBINARY

Logical

SQL_BIT

Memo

SQL_LONGVARCHAR

Numeric

SQL_DECIMAL

1 dBASE V のみ

2 最大 254 文字


注: ほとんどの製品では、NUMBER 列の精度およびスケールに従っていない数字を使って dBASE ファイルを作成することはできません。 たとえば、 これらの製品では、NUMBER(5,2) で宣言された列に 100000 を保存できますが、 dBASE ドライバにより、エラー 1244 "Unsupported decimal format." が表示されます。このエラーを対処するには、従っていない列に 1 を掛けると、 列が Float データ型に変換されます。次の例のようになります。

SELECT BADCOL * 1 FROM BADFILE

BADCOL * 1 で値が求められ、浮動値として返されます。


C.3.5 列名

SQL 文 (SELECT、INSERT など) の列名の長さは、最大 10 文字です。 列名には、アルファベット文字およびハイフン (-) を入れることができます。 最初の文字は、アルファベット文字 (a 〜 z) にする必要があります。

C.3.6 SELECT 文

SQL 文を使って列の指定とレコードの取り出しが可能です。 dBASE の SELECT 文では、Connect ODBC リファレンス』の『付録 A フラットファイルドライバと SQL 文』 で説明されているようにすべての SELECT 文の句がサポートされています。 このセクションでは、dBASE 固有 (Rowid) の情報について説明します。

C.3.6.1 Rowid 疑似列

各 dBASE レコードには、Rowid と名付けられた特殊な列が含まれています。 また、このフィールドには、データベースのレコード順序を示す固有の番号が含まれています。 たとえば、1 〜 50 の Rowid 値が付いた 50 個のレコードが表に含まれています (マーキングされたレコードが削除されていない場合)。 WHERE 句および SELECT 句で Rowid を使用できます。

Rowid は、とくにレコードの更新時に役立ちます。 他のフィールドと一緒にデータベースのレコードの Rowid を検索できます。次の例のようになります。

SELECT last_name, first_name, salary, rowid FROM 
emp

その後、更新するレコードの Rowid を使用して、正確なレコードを更新し、その他のレコードが更新されないようにすることができます。 次の例のようになります。

UPDATE emp set salary = 40000 FROM emp WHERE 
rowid=21

単一の行を素早く更新するには、Rowid の付いた WHERE 句を使用します。 ただし、Rowid 列を更新することはできません。

WHERE 句で Rowid 疑似列を使用する SELECT 文を実行すると、 完全一致のマッチを行う場合に限り、最大のパフォーマンスが発揮されます。 完全一致のマッチではなく、範囲スキャンを使用する場合、表全体のスキャンが実行されます。 次の例のようになります。

SELECT * FROM emp WHERE rowid=21    //fast search
SELECT * FROM emp WHERE rowid <=25  //full table 
scan

C.3.7 ALTER TABLE 文

dBASE ドライバは、ALTER TABLE 文をサポートしており、この文を使って表に列 (複数可) を追加することができます。 また、単一の列を削除することもできます。

ALTER TABLE 文の書式は次のとおりです。

ALTER TABLE table_name {ADD column_name data_type 
| ADD
(column_name data_type [, column_name data_type] 
... ) |
DROP [COLUMN] column_name}

ここで

table_name 列の追加または削除を行う表の名前です。
column_name 追加する列の名前です。また、削除の場合は、ここに削除する列を指定します。
data_type 追加する列のデータ型です。

たとえば、表 emp に 2 つの列を追加する場合は、次のようになります。

ALTER TABLE emp (ADD startdate date, dept char 
(10))

1 つの ALTER TABLE 文で列の追加と削除の両方を行うことはできません。 また、列の削除は、一度に 1 列に限られます。列の削除の記述例は次のとおりです。

ALTER TABLE emp DROP startdate

列にオブジェクト (インデックスやビューなど) が設定されている場合に、 その列に対して ALTER TABLE 文を使って削除すると、エラーが発生します。

C.3.8 CREATE INDEX 文

作成するインデックスのタイプは、システム情報ファイルまたは接続文字列で設定する CreateType 属性の値で決定されます。 次のインデックスを使用できます。

インデックスの作成に使用する構文は次のとおりです。

CREATE [UNIQUE] INDEX index_name ON base_table_name 
(field_name [ASC | DESC] [,field_name [ASC | DESC]] ...)

ここで

index_name タグの名前です。インデックスファイルにあるインデックスの指定に必要です。 表の各インデックスには固有の名前が付いています。
UNIQUE 列に ANSI 形式の固有インデックスを作成し、キーが固有であることを確認します。 固有インデックスを使用すると、パフォーマンスが向上します。 ANSI 形式の固有インデックスは、dBASE 形式の固有インデックスとは異なります。 ANSI 形式の固有インデックスを使用した場合、重複した値をインデックスの付いたフィールドに挿入する場合に、エラーメッセージが表示されます。 dBASE 形式の固有インデックスを使用した場合には、エラーメッセージが表示されません。 これは、インデックスファイルにキーが 1 つだけ挿入されるためです。
base_table_name 作成するインデックスのデータベースファイルの名前です。 拡張子 .DBF がない場合には、自動的に追加されるため、拡張子 .DBF 入力する必要はありません。 デフォルトでは、dBASE インデックスファイルは base_table_name.MDX、 FoxPro インデックスは base_table_name.CDX という名前になります。
field_name dBASE 表にある列の名前です。 フィールド名のリストの代わりに有効な dBASE 形式のインデックス式を使用できます。

ASC を設定すると、昇順でインデックスが作成されます。DESC を設定すると、 降順でインデックスが作成されます。デフォルトでは、インデックスが昇順で作成されます。 1 つの CREATE INDEX 文で ASC と DESC 両方を指定することはできません。 たとえば、次の文は無効となります。

CREATE INDEX emp_i ON emp (last_name ASC, emp_id DESC)

次の表では、dBASEドライバでサポートされている各種インデックスファイルの属性を示しています。 サポートされている各タイプの項目の詳細は、次のとおりです。

タイプ/拡張子の
作成

dBASE
固有

降順

キー列の最大サイズ

列仕様の最大サイズ

本番用/構造用のインデックス

式のサポート

dBASE III .NDX

あり

なし

100

219

なし

なし

dBASE IV, V .MDX

あり

あり

100

220

あり

あり

Clipper .NTX

あり

あり

250

255

なし

あり

FoxPro .IDX*

あり

あり

240

255

なし

あり

FoxPro .CDX

あり

あり

240

255

あり

あり

* CDX ファイルのタグと同じ内部構造を持つ IDX インデックスはコンパクト化されます。 CREATE INDEX 文のタグ名とともに IDX 拡張子が含まれている場合には、IDX インデックスを作成できます。

C.3.9 DROP INDEX 文

インデックスの削除に使用する構文は次のとおりです。

DROP INDEX table_name.index_name

ここで、table_name は、拡張子を除いた dBASE ファイルの名前です。

C.3.10 PACK 文

dBASE ファイルからレコードを削除しても、そのレコードは実際には除去されません。 その代わり、レコードは削除済みとしてマーキングされます。 また、メモフィールドを更新すると、ファイルのメモリが浪費されます。削除されたレコードを除去し、 メモフィールドの未使用メモリを解放するには、 PACK 文を使用する必要があります。次のような書式になります。

PACK filename

ここで、filename は、PACK 文を実行する dBASE ファイルの名前です。 拡張子、.DBF がない場合には、自動的に追加されるため、拡張子、.DBF を入力する必要はありません。 次の例のようになります。

PACK emp

他のユーザによって開かれているファイルに PACK 文を実行することはできません。 また、手動によるコミットモードで PACK 文を使用することもできません。

指定したファイルの場合、PACK 文を使って次の動作が実行されます。

C.3.11 ロック

dBASE ドライバを使って、ネットワーク上で dBASE ファイルを共用するアプリケーションを構築および実行することができます。複数のユーザが共用データベースにアクセスしてアプリケーションを実行しているときはいつでも、変更しようとしているレコードをアプリケーションからロックします。 レコードをロックすると、他のユーザによるレコードのロック、更新、または削除が行われなくなります。

C.3.11.1 データベースのロックレベル

dBASE ドライバでは、3 つのロックレベル (NONE、RECORD、および FILE) がサポートされています。 接続文字列 (LCK=) でそれらのレベルを設定できます。

ロックしない場合は、パフォーマンスが最適となりますが、シングルユーザ環境に限定されます。

レコードまたはファイルをロックすると、 INSERT、UPDATE、DELETE、または SELECT...FOR UPDATE 文の実行時にデータベースの表がロックされます。 ユーザがトランザクションをコミットすると、ロックが解除されます。ロックを設定すると、他のユーザによるロックされたオブジェクトの変更が行われなくなりますが、リーダーはロックされません。

レコードをロックすると、文により影響を受けるレコードのみがロックされます。 また、表を変更する他のユーザとの同時性が提供されます。

ファイルをロックすると、表にあるすべてのレコードがロックされます。また、レコードの変更頻度がごく少ない場合、 おもに 1 人のユーザがレコードを変更する場合、または大量のレコードを変更する場合には、 オーバーヘッドが低下し、パフォーマンスが向上します。

C.3.11.2 ロック数の制限

ファイルに配置できるロック数は制限されています。 サーバから dBASE ファイルにアクセスしている場合、その制限はサーバに依存します (サーバのマニュアルを参照してください)。

C.3.11.3 トランザクションによるレコードロックの影響

UPDATE または DELETE 文を実行すると、その文により影響を受けるレコードがロックされます。 ドライバによりその変更内容がコミットされた後にロックが解除されます。 手動によるコミットモードを設定した場合、アプリケーションでトランザクションがコミットされるまで ロックが保持されます。自動コミットモードを設定した場合は、文が実行されるまでロックが保持されます。

SELECT...FOR UPDATE 文を実行すると、レコードがフェッチされる場合に限り、レコードがロックされます。 レコードを更新する場合は、その変更内容がコミットされるまでロックが保持されます。 それ以外の場合は、次のレコードがフェッチされると、ロックが解除されます。

C.3.12 サポートする分離レベルとロックレベル

dBASE ドライバは、分離レベル 1 をサポートしています。また、ファイルレベルおよびレコードレベルのロックもサポートしています。 分離とロックの詳細については、『Connect ODBC リファレンス』の『付録 D ロックレベルと分離レベル 』 を参照してください。

C.3.13 ODBC 対応レベル

dBASE ドライバがサポートしている関数については、『Connect ODBC リファレンス』の『付録 C ODBC API 関数とスカラ関数』に説明されています。また、SQLSetPos 関数もサポートされています。

さらに、SQLExtendedFetch および SQLFetchScroll でバックワードフェッチとランダムフェッチが使用できます。 また、基本 SQL 文法がサポートされています。

C.3.14 接続形態と文の数

dBASE ドライバは、複数接続、および各接続ごとの複数の文の実行をサポートしています。

C.4 Connect ODBC Informix ドライバ

C.4.1 システム環境

次のコマンドを使って、環境変数、INFORMIXDIR に、INFORMIX クライアントをインストールしたディレクトリを設定する必要があります。

C シェル

setenv INFORMIXDIR /databases/informix

Bourne シェルおよび Korn シェル

INFORMIXDIR=/databases/informix;export INFORMIXDIR

さらに、INFORMIXSERVER 変数には、INFORMIX サーバ の名前 ($INFORMIXDIR/ext/sqlhosts ファイルで定義されている名前) を設定する必要があります。 詳細については、『Informix Online Dynamic Server Administrator's Guide, Volume 2』または『Informix UNIX Installation Guide』を参照してください。

INFORMIX

UNIX 版 INFORMIX ドライバでは、INFORMIX-Connect または ESQL-C 7.23 が必要です。

INFORMIX 9

INFORMIX 9 ドライバを使って、リモートの INFORMIX 7.x または 9 データベースにアクセスするには、 Solaris および HP-UX 版 INFORMIX-Connect または ESQL-C 9.1.3 と AIX 版 INFORMIX-Connect 9.1.4 が必要です。

C.4.2 データソースの設定および接続

データソースを設定するには、下記の表に示されているデータソース定義を使用する必要があります。 システム情報ファイルの設定に関する詳細については、『UNIX 環境』を参照してください。

アプリケーションから接続文字列を使ってデータソースに接続する場合は、データソース名を指定する必要があります。データソースの指定により、システム情報中でドライバにより使われるセクションが決定され、そこに記述されているデフォルトの接続情報がドライバによって読み取られます。また、システム情報中に記録されているデフォルトの接続情報は、接続文字列で属性と値を対で指定して、上書きすることができます。ただし、接続文字列で指定した情報は、システム情報に優先して使用されるだけで、実際にシステム情報に書き込まれることはありません。

接続文字列では、属性をフルネームまたは省略名で指定します。接続文字列の書式は、次のとおりです。

DSN=data_source_name[;attribute=value[;attribute=value]...]

ここで、data_source_name はデータソース名、attribute は属性、value は属性の値です。また、DSN は、属性、DataSourceName の略号です。Informix の場合の接続文字列は、次の例のようになります。

DSN=INFORMIX TABLES;DB=PAYROLL

以下の表は、各種属性のフルネームと略号(かっこ内)、および属性の内容の一覧 です。システム情報ファイルでは、属性のフルネームのみが使用されます。

この表にあるデフォルトは、接続文字列やシステム情報ファイルのデータソース定義に値が指定されていない場合に使用される初期値です。データソースの設定時に属性の値を指定した場合は、その値がデフォルト値となります。

属性

説明

ApplicationUsing
Threads (AUT)

ApplicationUsingThreads={0 | 1}。アプリケーションがマルチスレッドかどうかに応じて値を設定します。1 を指定すると、ドライバがマルチスレッドアプリケーション対応となります。シングルスレッドのアプリケーションの場合は、0 を指定します。これにより、ODBC スレッド保護標準に関連する処理が行われなくなります。

CancelDetect
Interval (CDI)

この属性の設定により、ユーザは、スレッドされたアプリケーションによる長時間にわたるクエリーを取り消すことができます。ドライバが、要求が SQLCancel を使用して取り消されたことをチェックする頻度を設定します。たとえば、CDI=5 と設定すると、まだ応答されていない要求ごとに、ユーザが SQLCancel を使用して取り消したかどうかを 5 秒ごとにチェックします。デフォルト値は 0 で、この場合は実行が完了するまで要求は取り消されません。

CursorBehavior (CB)

CursorBehavior={0 | 1}。各トランザクション終了後に、カーソルを保持するか、クローズするかを決定します。1(保持する)または 0(クローズする−デフォルト値)を指定することができます。1 を指定すると、カーソルをトランザクションが終了した時点の位置に保持することができます。ただし、これがデータベースのパフォーマンスに影響を及ぼす可能性があります。

Database (DB)

接続するデータベースの名前です。

DataSourceName (DSN)

システム情報に保管されるデータソース名です。Accounting、INFORMIX-Serv1 のように半角英数字で入力します。

EnableInsert
Cursors (EIC)

EnableInsertCursors={0 | 1}。この属性により、インサートカーソルを使用するかどうかを設定します。インサートカーソルを使用すると、同じ文を使って複数回の挿入を行う場合のパフォーマンスが向上します。このオプションを設定すると、挿入データはディスクに書き込まれる前にバッファに格納されます。0 を指定するとインサートカーソルは使用されません。デフォルト値は 1 です。

EnableScrollable
Cursors (ESC)

EnableScrollableCursors={0 | 1}。この属性では、スクロールカーソルを使用できるかどうかを決定します。 デフォルト値は 0 です (スクロールカーソルを使用しない)。 SELECT リストにロング列 (SQL_LONGVARCHAR または SQL_LONGVARBINARY) がない場合に限り、 スクロールカーソルを使用できます。 スクロールカーソルを使用できるように 1 を設定した場合、 SELECT リストにロング列を入れることはできません。

GetDBListFrom
Informix (GDBLFI)

GetDBListFromInformix={0 | 1}。この属性で、Informix サーバからデータベースリストを取得するか、もしくはユーザが指定したデータベースリストを表示するかを選択します。

1(デフォルト)を指定すると、Informix サーバからデータベースリストが取り出されます。0 を指定すると、〔ODBC Informix Driver Setup〕ダイアログボックスでユーザが入力したデータベースのリストが表示されます。

HostName (HOST)

Informix サーバが置かれているコンピュータの名前です。

LogonID (UID)

Informix サーバに登録されている自分のユーザ名です。

Password (PWD)

パスワードです。

ServerName
(SRVR)

Informix データベースを実行しているサーバ名。

Service (SERV)

ホストコンピュータで使われているサービスの名前です。この名前は通常、システム管理者が設定します。

UseDefaultLogin (UDL)

UseDefaultLogin={0 | 1}。1を指定するとログオン ID と Password が Informix レジストリから直接読み込まれます。デフォルト値は 0 で、ログオンについての情報は、システム情報、接続文字列、〔INFORMIX へのログオン〕ダイアログボックスのいずれかから読み込まれます。

C.4.3 データ型

以下の表は、Informix ドライバで使われるデータ型と標準 ODBC データ型との対応関係を示したものです。

INFORMIX 5 and 7

ODBC

Byte1

SQL_LONGVARBINARY

Char

SQL_CHAR

Date

SQL_TYPE_DATE

Datetime year to fraction(5)

SQL_TYPE_TIMESTAMP

Datetime year to fraction(f)2

SQL_TYPE_TIMESTAMP

Datetime year to second

SQL_TYPE_TIMESTAMP

Datetime year to day

SQL_TYPE_DATE

Datetime hour to second

SQL_TYPE_TIME

Datetime hour to fraction(f)2

SQL_TYPE_TIME

Decimal

SQL_DECIMAL

Float

SQL_DOUBLE

Integer

SQL_INTEGER

Interval year(p) to year

SQL_INTERVAL_YEAR

Interval year(p) to month

SQL_INTERVAL_YEAR_TO_MONTH

Interval month(p) to month

SQL_INTERVAL_MONTH

Interval day(p) to day

SQL_INTERVAL_DAY

Interval day(p) to hour

SQL_INTERVAL_DAY_TO_HOUR

Interval day(p) to minute

SQL_INTERVAL_DAY_TO_MINUTE

Interval day(p) to second

SQL_INTERVAL_DAY_TO_SECOND

Interval day(p) to fraction(f)2

SQL_INTERVAL_DAY_TO_SECOND

Interval hour(p) to hour

SQL_INTERVAL_HOUR

Interval hour(p) to minute

SQL_INTERVAL_HOUR_TO_MINUTE

Interval hour(p) to second

SQL_INTERVAL_HOUR_TO_SECOND

Interval hour(p) to fraction(f)2

SQL_INTERVAL_HOUR_TO_SECOND

Interval minute(p) to minute

SQL_INTERVAL_MINUTE

Interval minute(p) to second

SQL_INTERVAL_MINUTE_TO_SECOND

Interval minute(p) to fraction(f)1

SQL_INTERVAL_MINUTE_TO_SECOND

Interval second(p) to second

SQL_INTERVAL_SECOND

Interval second(p) to fraction(f)1

SQL_INTERVAL_SECOND

Interval fraction to fraction(f)2

SQL_VARCHAR

Money

SQL_DECIMAL

Serial

SQL_INTEGER

Smallfloat

SQL_REAL

Smallint

SQL_SMALLINT

Text1

SQL_LONGVARCHAR

Varchar1

SQL_VARCHAR

1 このデータ型は、Standard Engine(SE)のデータベースではサポートされていません。

2 Fraction(f) 型は、ドライバでは fraction(5) にマップされます。精度はデータ型に依存し、スケールは 5 になります。

C.4.3.1 INFORMIX 9

INFORMIX データ型の他に、INFORMIX 9 では標準 ODBC データ型と次のように対応しています。

INFORMIX 9

ODBC

Blob

SQL_LONGVARBINARY

Boolean

SQL_BIT

Clob

SQL_LONGVARCHAR

Int8

SQL_BIGINT

Lvarchar

SQL_VARCHAR

Serial8

SQL_BIGINT

Informix 9 ドライバは、複合データ型(set、multiset、list、named/unnamed abstract 型など)をサポートしていません。データ中に複合データ型があると、不明なデータ型エラー (SQL State HY000) が返されます。

C.4.4 サポートする分離レベルとロックレベル

接続するデータベースシステムが Informix Online の場合は、分離レベルとして 0(コミット前に読み出し)、1(コミット後に読み出し)、3(直列化可能)をサポートしています。デフォルト値は 1 です。Informix Standard Engine(SE)は、レベル 0(コミット前に読み出し)のみをサポートしています。

また、Informix ドライバは、「カーソルスタビリティ」と呼ばれる分離レベル 1 をサポートしています。アプリケーションは、SQLSetConnectOption(1040,1) を呼び出して、この分離レベルを使用することができます。

Informix ドライバでは、データベースのトランザクションのログが無効になっている場合は、トランザクションは実行されません(ただし、ドライバは自動コミットモードで動作します)。

Informix ドライバは、ページ単位と行単位のロックをサポートしています。

分離とロックの詳細については、『Connect ODBC リファレンス』の『付録 D ロックレベルと分離レベル 』 を参照してください。

C.4.5 ODBC 対応レベル

INFORMIX ドライバがサポートしている関数については、『Connect ODBC リファレンス』の『付録 C ODBC API 関数とスカラ関数』に説明されています。 また、以下の X/Open 関数もサポートされています。

さらに、接続文字列の属性 EnableScrollableCursors を 1 に設定した場合は、SQLExtendedFetch または SQLFetchScroll でスクロールカーソルが使用できます。 また、コアレベルの SQL 文法がサポートされています。

C.4.6 接続形態と文の数

Informix ドライバは、Informix データベースへの複数接続、および各接続ごとの複数の文の実行をサポートしています。

C.5 Connect ODBC OpenIngres ドライバ

C.5.1 システム環境

次のセクションでは、OpenIngres と OpenIngres 2 の両方のシステム環境について説明します。

OpenIngres

クライアントワークステーションから OpenIngres データベースにアクセスするには、 クライアントノードに OpenIngres/Net Release 1.2 製品 (int.wnt/03 以上) をインストールしておく必要があります。

OpenIngres 2

クライアントワークステーションから OpenIngres 2 データベースにアクセスするには、 クライアントノードに CA OpenIngres Net バージョン 2.0 以上をインストールしておく必要があります。

OpenIngres および OpenIngres 2

リモートまたはホストの OpenIngres データベースは、INGRES 1.2 以上にする必要があります。

環境変数 II_SYSTEM に、INGRES クライアントをインストールしたディレクトリを設定する必要があります。

たとえば、/databases/ingres に INGRES 製品をインストールした場合は、次のようになります。

C シェル

setenv II_SYSTEM /databases

Bourne シェルまたは Korn シェル

II_SYSTEM=/databases;export II_SYSTEM

C.5.2 データソースの設定および接続

データソースを設定するには、下記の表に示されているデータソース定義を使用する必要があります。 システム情報ファイルの設定に関する詳細については、『UNIX 環境』を参照してください。

アプリケーションから接続文字列を使ってデータソースに接続する場合には、 データソース名を指定する必要があります。データソースの指定により、システム情報ファイルでドライバにより使われるセクションが決定され、 そこに記述されているデフォルトの接続情報がドライバによって読み取られます。 また、システム情報ファイルに記録されているデフォルトの接続情報は、接続文字列で attribute=value のように指定して上書きすることができます。 ただし、接続文字列で指定した情報は、システム情報ファイルに優先して使用されるだけで、 実際にシステム情報ファイルに書き込まれることはありません。

接続文字列では、フルネームまたは省略名で指定できます。 接続文字列の書式は次のとおりです。

DSN=data_source_name[;attribute=value[;attribute=value]...]

OpenIngres の接続文字列の例

DSN=INGRES TABLES;SRVR=QESERV;DB=PAYROLL;UID=JOHN

次の表は、各種属性のフルネームと省略名、および属性の内容の一覧です。 システム情報ファイルでは、属性のフルネームのみが使用されます。

この表にあるデフォルト値は、接続文字列やシステム情報ファイルのデータソース定義に値が指定されていない場合に使用される初期値です。データソースの設定時に属性の値を指定した場合は、その値がデフォルト値となります。

属性

説明

ApplicationUsing
Threads (AUT)

ApplicationUsingThreads={0 | 1}。アプリケーションがマルチスレッドかどうかに応じて値を設定します。 デフォルト 1 を設定すると、ドライバがマルチアプリケーション対応と なります。シングルスレッドのアプリケーションの場合は、0 を設定します。これにより、 ODBC スレッド保護標準に関連する処理が行われなくなります。

Database (DB)

接続するデータベースの名前です。

DataSourceName (DSN)

システム情報ファイルに保管されるデータソース名です。Accounting、INGRES-Serv1 のように半角英数字で入力します。

DefaultLongData
BuffLen (DLDBL)

アンバウンドされたロングデータの結果列について、クライアントに転送されるデータの最大長を 1024 の倍数で指定します。 デフォルト値は 1024 です。つまり、1024 * 1024 = 1 MB です。

EnableSelectLoop

EnableSelectLoop={0 | 1}。この属性により、カーソルではなく選択ループモデルを使って複数の行を検索できます。 デフォルト値は 0 (カーソルを使用) です。 1 を設定すると、選択ループが使用されます。

LockMode (LM)
OpenIngres 2.0 のみ

LockMode={0 | 1 | 2}。行、ページ、または表のロックを選択できます。 オプションは、行 (0)、ページ (1)、表 (2) です。デフォルト値は、ページのロック (1) です。

LogonID (UID)

OpenIngres データベースの接続に使用するデフォルトのログオン ID (ユーザ名) です。 データベースのセキュリティが有効な場合のみ必要です。 データベースのセキュリティが有効な場合は、システム管理者に連絡して、自分のログオン ID を取得してください。

Options (OPTS)

OpenIngres SQL コマンドで使用できるフラグです。次の例のようになります。

  • -l (データベースを排他的にロックする)

  • -u (ユーザ名でログオンする)

  • +w または -w (データベースが排他的に開かれている場合にデータベースを待機する/しない)

  • +U または -U (ユーザによるシステム表の更新およびデータベースの排他ロック可能/不可)

  • +Y または -Y (ユーザによるデータベースを排他的にロックしないシステム表の更新および可能/不可)

RepeatedCache
Size (RCS)

整数値を指定して、すべての UPDATE 文および INSERT 文を反復クエリーとして実行するかどうかを決定します。 この属性により、同じ SQL 文のセットを反復するアプリケーションのパフォーマンスが向上します。 0 (デフォルト値) に設定すると、文が反復されません。 この属性の推奨値は 100 (RepeatedCacheSize=100) です。

すべての文ではなく、1 つの文を反復するには、OpenIngres Repeated 構文を使用します。

RepeatedSelects (RS)

RepeatedSelects={0 | 1 | 2}。この属性では、SELECT 文を最適化するか、 その文を反復クエリーとして実行するかを決定します。 0 (デフォルト値) を設定すると、以前のバージョンの製品で行われていたようにすべての SELECT 文が実行されます。

1 を設定すると、結果行 1 行だけを返す SELECT 文が最適化されます。 2 を設定すると、すべての SELECT 文が反復クエリーとして実行されます。 1 または 2 を設定した場合には、RepeatedCacheSize 属性を 1 以上にする必要があります。

1 または 2 に設定した場合は、次のようになります。

  • ドライバが 1 つのアクティブな文と接続に限定されます。

  • FOR UPDATE 句を含む SELECT 文には影響しません。

ServerName (SRVR)

OpenIngres NETU ユーティリティを使って定義した仮想ノードの名前です。 この仮想ノードにより、呼び出すシステム、呼び出し方法、およびユーザ名およびパスワードが指示されます。

SQLGrammar (SG)

SQLGrammar={0 | 1}。OpenSQL を使ってデータソースにアクセスできます。 デフォルトは 0 (INGRES SQL) です。

ValueReplacement
(VR)

ValueReplacement={0 | 1}。この属性では、反復文でハードコード化された値をパラメータに 置き換えるかどうかを決定します。この属性は、動的パラメータを使用しないアプリケーションに有用です。

0 (デフォルト値) を設定すると、パラメータに置き換えられません。 1 を設定すると、ハードコード化された値がパラメータマーカに置き換えられます。 ただし、RepeatedCacheSize 属性を 1 以上にするか、OpenIngres 反復キーワードを使用する必要があります。

このオプションは、カーソルが必要な FOR UPDATE 句を含む SELECT 文、またはパラメータマーカをすでに使用している SELECT 文には影響しません。

この属性では、標準 ODBC SQL 文法のサブセットのみがサポートされています。 パフォーマンスを考慮するため、完全 SQL パーサは利用されません。 たとえば、サブ選択、文字列以外の列の "is NULL" はサポートされていません。

C.5.3 データ型

次の表は、OpenIngres データ型と標準 ODBC データ型との対応関係を示したものです。

OpenIngres

ODBC

Byte*

SQL_BINARY

Byte varying*

SQL_VARBINARY

Char

SQL_CHAR

Date

SQL_TYPE_TIMESTAMP

Float

SQL_DOUBLE

Float4

SQL_REAL

Integer

SQL_INTEGER

Integer1

SQL_TINYINT

Long byte*

SQL_LONGVARBINARY

Long varchar*

SQL_LONGVARCHAR

Money*

SQL_DECIMAL

Smallint

SQL_SMALLINT

Varchar

SQL_VARCHAR

* OpenSQL ではサポートされていません。


注: OpenIngres の Date 値は、ODBC データ型の SQL_TYPE_TIMESTAMP には直接対応していません。 間隔データを Date 列に配置する場合、その値を読み込むときにエラーが発生します。


C.5.4 サポートする分離レベルとロックレベル

OpenIngres ドライバは、分離レベル 1 (コミット後に読み出し) をサポートしています。これがデフォルト値です。また、ページレベルのロックもサポートしています。 分離とロックの詳細については、『Connect ODBC リファレンス』の『付録 D ロックレベルと分離レベル 』 を参照してください。

C.5.5 ODBC 対応レベル

OpenIngres ドライバがサポートしている関数については、『Connect ODBC リファレンス』の『付録 C ODBC API 関数とスカラ関数』に説明されています。SQLGrammar=1 以外の場合には、SQLProcedures および SQLProcedureColumns 関数もサポートされています。

また、基本 SQL 文法がサポートされています。

C.5.6 接続形態と文の数

OpenIngres データベースシステムは、複数接続、および各接続ごとの複数の文の実行をサポートしています。

接続文字列の属性 RepeatedSelectsに 1 または 2 を設定した場合、ドライバが 1 つのアクティブな文と接続に限定されます。

C.6 Connect ODBC Oracle ドライバ

C.6.1 システム環境

UNIX 版 Oracle および Oracle8 クライアント情報は、次のとおりです。

Oracle および Oracle8

Oracle データソースを使用する前に、 使用する Oracle SQL*Net または Net8 ドライバを $ORACLE_HOME ソースツリーのワークステーション上にインストールしておく必要があります。 インストールプロセスで作成される環境変数、ORACLE_HOME は、 Oracle クライアントコンポーネントの場所を示します。

Oracle では、ランタイム Oracle コンポーネントは Oracle RDBMS と呼ばれます。 Oracle RDBMS 製品の場合に、Oracle ドライバは、$ORACLE_HOME/bin の実行可能ファイル、および $ORACLE_HOME/rdbms/lib のインターフェイスライブラリに依存します。

環境変数、ORACLE_HOME に、Oracle RDBMS、SQL*Net、または Net8 製品をインストールしたディレクトリを設定する必要があります。 次の例のようになります。

C シェル

setenv ORACLE_HOME /databases/oracle

Bourne シェルおよび Korn シェル

ORACLE_HOME=/databases/oracle;export ORACLE_HOME

Oracle7 SQL*Net 共有ライブラリドライバの構築

Oracle ドライバでは、AIX 上での Oracle7 SQL*Net ドライバ、Solaris および HP=UX 上での Oracle7.1 のみの構築にサイトリンクが必要です。このサイトリンクにより、使用している一意の Oracle7 SQL*Net 設定がファイルにバインドされます。 Oracle ドライバは、このファイルを使用してローカルおよびリモートの Oracle データベースにアクセスします。

Oracle7 SQL*Net 共有ライブラリを構築する前に Oracle をインストールし、 環境変数 ORACLE_HOME に、Oracle をインストールしたディレクトリを設定します。 Connect ODBC により、Oracle7 SQL*Net ドライバを構築する genclntsh スクリプトが提供されます。 このスクリプトは、scr/oracle ディレクトリにあります。

次のコマンドを使って、Oracle7 SQL*Net 共有ライブラリを構築します。

genclntsh

Solaris 用 Oracle Net8 共有ライブラリドライバの構築

Solaris 版 Oracle8.0.3 または 8.0.4 で使用する場合、Oracle8 ドライバでは、 一度だけサイトにリンクして、代わりの Oracle Net8 ドライバを構築する必要があります。 使用している固有の Oracle Net8 設定がファイルにバインドされます。 Oracle ドライバは、このファイルを使用してローカルおよびリモートの Oracle データベースにアクセスします。

Oracle8 ドライバには、共有ライブラリ libclntsh.so が必要です。 このライブラリは、Oracle スクリプトの genclntsh によって構築されます。 Oracle スクリプトの genclntsh は、シンボル slpmprodstab が定義されていない場合にはエラーの原因となります。 そのため、Oracle8 ユーザは、Connect ODBC スクリプトの genclntsh8 を使用して、代わりの libclntsh.so を構築する必要があります。 scr/oracle ディレクトリにあるこのスクリプトは、新しい libclntsh.so を ../../lib、つまり、使用する $ODBC_HOME/lib ディレクトリに配置します。$ORACLE_HOME/lib にある元の libclntsh.so は上書きされません。

Oracle Net8 共有ライブラリを構築する前に Oracle をインストールし、 環境変数 ORACLE_HOME に、Oracle をインストールしたディレクトリを設定します。

次のコマンドを使って、Oracle Net8 共有ライブラリを構築します。

genclntsh8

警告: Oracle8 ユーザの $ORACLE_HOME/lib ディレクトリには、元のライブラリである libclntsh.so があります。したがって、正しいライブラリを含む $ODBC_HOME/lib ディレクトリは、 LD_LIBRARY_PATH で $ORACLE_HOME/lib より前に指定する必要があります。このように指定されていないと、 元のライブラリがロードされ、未解決のシンボルエラーが発生します。


C.6.2 データソースの設定および接続

データソースを設定するには、下記の表に示されているデータソース定義を使用する必要があります。 システム情報ファイルの設定に関する詳細については、『UNIX 環境』を参照してください。

アプリケーションから接続文字列を使ってデータソースに接続する場合には、 データソース名を指定する必要があります。データソースの指定により、システム情報ファイルでドライバにより使われるセクションが決定され、そこに記述されているデフォルトの接続情報がドライバによって読み取られます。 また、システム情報ファイルに記録されているデフォルトの接続情報は、接続文字列で attribute=value のように指定して上書きすることができます。 ただし、接続文字列で指定した情報は、システム情報ファイルに優先して使用されるだけで、 実際にシステム情報ファイルに書き込まれることはありません。

接続文字列では、フルネームまたは省略名で指定できます。 接続文字列の書式は次のとおりです。

DSN=data_source_name[;attribute=value[;attribute=value]...]

Oracle 接続文字列の例

DSN=Accounting;SRVR=X:QESRVR;UID=JOHN;PWD=XYZZY

サーバ名にセミコロンが含まれている場合は、サーバ名を次のように二重引用符で囲みます。

DSN=Accounting;SRVR="X:QE;SRVR";UID=JOHN;PWD=XYZZY

次の表は、各種属性のフルネームと省略名、および属性の内容の一覧です。システム情報ファイルでは、属性のフルネームのみが使用されます。

この表にあるデフォルト値は、接続文字列やシステム情報ファイルのデータソース定義に値が指定されていない場合に使用される初期値です。データソースの設定時に属性の値を指定した場合は、その値がデフォルト値となります。

C.6.2.1 オペレーティングシステムパラメータによる接続

Oracle には、オペレーティングシステムのユーザ名とパスワードを使って Oracle に接続する機能があります。 Oracle に接続するには、ユーザ名にスラッシュ( / ) を付け、パスワードはブランクのままにします。 サーバ/クライアントの設定については、Oracle サーバのマニュアルを参照してください。

属性

説明

ApplicationUsing
Threads (AUT)

ApplicationUsingThreads={0 | 1}。 アプリケーションがマルチスレッドかどうかに応じて値を設定します。 デフォルト 1 を設定すると、ドライバがマルチアプリケーション対応となります。 シングルスレッドのアプリケーションの場合は、0 を設定します。これにより、 ODBC スレッド保護標準に関連する処理が行われなくなります。

1 を設定すると、SQLGetInfo(SQL_ASYNC_MODE) が SQL_AM_NONE、SQLSetConnectAttr(SQL_ATTR_ASYNC_ENABLE) が、 optional feature not implemented、 SQLSet/GetStmtAttr(SQL_ATTR_ASYNC_ENABLE) が optional feature not implemented を返します。マルチスレッド環境の Oracle クライアントでは、 非同期実行はサポートされていません。

ArraySize (AS)

ドライバが複数の行をフェッチするときに使用するバイト数です。 0 〜 65,536 までの値を指定できます。デフォルト値は 60,000 です。 設定値が大きいほど、ドライバがネットワークからデータをフェッチする回数が減り、 スループットが増大します。また、設定値が小さいほど、サーバがデータを転送するのを待機する遅延時間が短くなり、 コンピュータが応答できる時間が増えます。

CatalogOptions (CO)

CatalogOptions={0 | 1}。カタログ関数 SQLTables と SQLColumns の結果列 REMARKS、 および SQLColumns の COLUMN_DEF の内容を取り出すかどうかを指定します。 1 を設定すると、これらの内容が取り出されます。デフォルト値は 0 です。

DataSourceName (DSN)

システム情報ファイルの Oracle データソース設定を示す文字列です。 Accounting、Oracle-Serv1 のように半角英数字で指定します。

DefaultIsolation
Level (DIL)
Oracle8 のみ

DefaultIsolationLevel=文字列値です。同時トランザクションのデフォルトの分離レベルを指定します。 この値は、SQL_TXN_READ_COMMITTED および SQL_TXN_READ_SERIALIZABLE です。 デフォルト値は SQL_TXN_READ_COMMITTED です。

EnableDescribe
Param (EDP)

EnableDescribeParam={0 | 1}。ODBC API 関数の SQLDescribeParam を使用可能にします。 この関数により、すべてのパラメータは SQL_VARCHAR のデータ型で返されます。 Microsoft Remote Data Objects (RDO) を使用してデータにアクセスする場合は、 このオプションを 1 に設定する必要があります。デフォルト値は 0 です。

EnableScrollable
Cursors (ESC)

EnableScrollableCursors={0 | 1}。データソースにスクロールカーソルを使用可能にします。 キーセットカーソルおよび静的カーソルが使用できます。 データベースのアクセスに Microsoft Foundation Classes を使用する場合は、 このオプションを 1 に設定する必要があります。デフォルト値は 0 です。

LockTimeOut (LTO)
Oracle7 のみ

Oracle が SELECT...FOR UPDATE 文を処理するときに、ロックの解除を待ってからエラーを発生させるかどうかを指定する値です。 -1 (永久待機) または 0 (待機しない) を指定できます。デフォルト値は 0 です。

LogonID (UID)

アプリケーションが Oracle データベースの接続に使用するログオン ID (ユーザ名) です。 データベースのセキュリティが有効な場合のみ必要です。 データベースのセキュリティが有効な場合は、システム管理者に連絡して、自分のログオン ID を取得してください。 オペレーティングシステムのユーザ名を使用する場合は、 『オペレーティングシステムパラメータによる接続』を参照してください。

PacketSize (PS)
Oracle7 のみ

PacketSize={1024 | 2048 | 4096 | 8192}。TCP/IP 接続の場合のパケットサイズを制御する値です。 指定できる値は 1024、2048、4096、8192 のいずれかです。これ以外の値は無視されます。 この値は、ServerName の属性 (下記に説明されている) が TCP/IP の T に設定されている場合に限り有効です。

Password (PWD)

アプリケーションが Oracle データベースの接続に使用するパスワードです。 オペレーティングシステムのパスワードを使用する場合は、『オペレーティング システムパラメータによる接続』を参照してください。

ProcedureRet
Results (PRR)

ProcedureRetResults={0 | 1}。値は、Off(0) と On(0) です。デフォルト値は 0 です。 1 を設定すると、ストアドプロシージャ/関数の結果セットを返します。 結果セットを返さないストアドプロシージャを実行すると、パフォーマンスが低下します。 詳細については、『結果を返すストアドプロシージャの使用』 を参照してください。

ServerName (SRVR)

アクセスされるサーバとデータベースを指定するクライアント接続文字列に対応したデータベース名です。 必要な情報は、使用しているクライアントドライバによって異なります。

Oracle7 および Oracle8 のリモートサーバの場合の、SQL*Net 接続文字列は、次のようになります。

driver_prefix:computer_name[:sid]

driver_prefix は、使用するネットワークプロトコルを示します。 指定できる値は P (名前付きパイプ)、X (SPX)、B (NetBIOS)、T (TCP/IP)、D (DECNet)、A (Oracle Async)、AT (AppleTalk)、 TNS (SQL*Net 2.0) です。その他のプロトコルについては、Oracle のマニュアルで確認してください。

computer_name は、使用しているネットワーク上の Oracle リスナー名を示します。

sid は、Oracle システム ID で、ホスト上で動作している Oracle のインスタンスを表します。 この要素は、1 つの Oracle データベースでの複数のインスタンスをサポートしているシステムに接続する場合に必要です。

ローカルサーバの場合の、SQL*Net 接続文字列の書式は、次のようになります。

database_name

database_name は、Oracle データベースを示します。

SQL*Net 接続文字列にセミコロンが含まれる場合は、その文字列を引用符で囲みます。 詳細については、SQL*Net のマニュアルを参照してください。

Oracle8

Oracle8 リモートサーバの場合の、Net8 Client 接続文字列の書式は、次のようになります。

TNSNAME

TNSNAME は、ネットワーク上の Oracle リスナーの別名です。

Net8 Client 接続文字列にセミコロンが含まれている場合は、文字列を引用符で囲みます。 詳細については、Net8 Client のマニュアルを参照してください。

C.6.3 Oracle データ型

次の表は、Oracle データ型と標準 ODBC データ型との対応関係を示したものです。

Oracle

ODBC

Char

SQL_CHAR

Date

SQL_TYPE_TIMESTAMP

Long

SQL_LONGVARCHAR

Long Raw

SQL_LONGVARBINARY

Number

SQL_DOUBLE

Number(p,s)

SQL_DECIMAL

Raw

SQL_VARBINARY

Varchar2

SQL_VARCHAR

Oracle8

Oracle データ型の他に、Oracle8 では標準 ODBC データ型と次のように対応しています。

Oracle8

ODBC

Bfile

SQL_LONGVARBINARY*

Blob

SQL_LONGVARBINARY

Clob

SQL_LONGVARCHAR

* 読み取り専用

Oracle8 ドライバは、Abstract データ型をサポートしていません。 取得したデータに Abstract データ型が含まれていると、不明なデータ型エラー (SQL State HY000) が返されます。 現行の Oracle8 クライアントの制約のため、非同期操作もサポートしていません。

C.6.4 結果を返すストアドプロシージャの使用

<結果を返すストアドプロシージャの使用> チェックボックスを選択すると、 ストアドプロシージャ/関数の結果セットが返されるようになります。 また、SQLGetInfo(SQL_MULT_RESULTS_SETS) は Y を返し、 SQLGetInfo(SQL_BATCH_SUPPORT) は SQL_BS_SELECT_PROC を返します。 このオプションが選択された状態で結果を返さないストアドプロシージャを実行すると、 パフォーマンスが低下します。

この機能を使用するには、ストアドプロシージャを特定の書式にする必要があります。 まず、パッケージを作成し、プロシージャで使用するすべてのカーソルを定義する必要があります。 その後、その新しいカーソルを使ってプロシージャを作成することができます。次に例を示します。

Create or replace package GEN_PACKAGE as CURSOR G1 is select 
CHARCOL from GTABLE2;
type GTABLE2CHARCOL is ref cursor return G1%rowtype;
end GEN_PACKAGE;
Create or replace procedure GEN_PROCEDURE1 (rset IN OUT 
GEN_PACKAGE.GTABLE2CHARCOL, icol INTEGER) as begin
open rset for select CHARCOL from GTABLE2 where INTEGERCOL 
<= icol order by INTEGERCOL; end;

詳細については、Oracle SQL のマニュアルを参照してください。

C.6.5 サポートする分離レベルとロックレベル

Oracle ドライバは、分離レベル 1 (コミット後に読み出し)、 3 (直列化可能、サーバのバージョンが Oracle 7.3 以上または 8.x の場合) をサポートしています。また、レコードレベルのロックもサポートしています。

分離とロックの詳細については、『Connect ODBC リファレンス』の『付録 D ロックレベルと分離レベル 』 を参照してください。

C.6.6 ODBC 対応レベル

Oracle がサポートしている関数については、『Connect ODBC リファレンス』の『付録 C ODBC API 関数とスカラ関数』に説明されています。また、EnableDescribeParam 属性が 1 に設定されている場合は、 SQLDescribeParam もサポートしています。さらに、EnableScrollableCursors 属性が 1 に設定されている場合には、SQLSetPos をサポートするとともに、 SQLFetchScroll および SQLExtendedFetch でスクロールカーソルが使用できます。

Oracle ドライバは、次の X/Open レベルの関数をサポートしています。

また、コアレベルの SQL 文法がサポートされています。

C.6.7 接続形態と文の数

Oracle ドライバは、複数接続、および各接続ごとの複数の文の実行をサポートしています。

C.7 Connect ODBC Sybase ドライバ

C.7.1 システム環境

System データソースを使用する前に、使用する Sybase Open Client Net-Libraries を $SYBASE ソースツリー上にインストールしておく必要があります。

次のコマンドを使って、環境変数、SYBASE に System クライアントをインストールしたディレクトリを設定する必要があります。

C シェル

setenv SYBASE /databases/sybase

Bourne シェルおよび Korn シェル

SYBASE=/databases/sybase;export SYBASE

System クライアント共有ライブラリを含むディレクトリを、環境変数、LD_LIBRARY_PATH (Solaris の場合)、 LIBPATH (AIX の場合)、および SHLIB_PATH (HP-UXの場合) に含める必要があります。

C シェル

setenv LD_LIBRARY_PATH /databases/sybase/
lib:$LD_LIBRARY_PATH

Bourne シェルおよび Korn シェル

LD_LIBRARY_PATH=/databases/sybase/
lib:$LD_LIBRARY_PATH;export LD_LIBRARY_PATH

非 DCE 環境では、ivsybxx Sybase ドライバを使用します。これにはライブラリ、libct が必要です。DCE 環境では、 ivsyb11xx Sybase ドライバを使用します。これには Sybase 11.1 クライアントライブラリ、libct_r が必要です。

C.7.2 データソースの設定および接続

データソースを設定するには、下記の表に示されているデータソース定義を使用する必要があります。 システム情報ファイルの設定に関する詳細については、『UNIX 環境』を参照してください。

アプリケーションから接続文字列を使ってデータソースに接続する場合は、データソース名を指定する必要があります。データソースの指定により、システム情報ファイル中でドライバにより使われるセクションが決定され、そこに記述されているデフォルトの接続情報がドライバによって読み取られます。また、システム情報中に記録されているデフォルトの接続情報は、接続文字列で属性と値を対で指定して、上書きすることができます。ただし、接続文字列で指定した情報は、システム情報ファイルに優先して使用されるだけで、実際にシステム情報ファイルに書き込まれることはありません。

接続文字列では、属性をフルネームまたは略号で入力します。接続文字列の書式は、次のとおりです。

DSN=data_source_name[;attribute=value[;attribute=value]...]

ここで、data_source_name はデータソース名、attribute は属性、value は属性の値です。また、DSN は、属性、DataSourceName の略号です。Sybase の場合の接続文字列は、次の例のようになります。

DSN=SYS10 TABLES;SRVR=QESRVR;DB=PAYROLL;UID=JOHN;PWD=XYZZY

以下の表は、各種属性のフルネームと略号(かっこ内)、および属性の内容の一覧 です。 システム情報ファイルでは、属性のフルネームのみが使用されます。

デフォルト値が示されている属性もあります。この値は初期値で、接続文字列中で属性の値が指定されていない場合は、この初期値が使われます。また、システム情報で属性の値が指定されていない場合にも使用されます。データソースの設定時に属性の値を指定した場合は、その値がデフォルト値となります。

属性

説明

ApplicationName (APP)

Sybase により認識されるアプリケーションの名前。

ApplicationUsing
Threads (AUT)

ApplicationUsingThreads={0 | 1}。アプリケーションがマルチスレッドかどうかに応じて値を設定します。1 を指定すると、ドライバがマルチスレッドアプリケーション対応となります。シングルスレッドのアプリケーションの場合は、0 を指定します。これにより、ODBC スレッド保護標準に関連する処理が行われなくなります。

ArraySize (AS)

各フェッチごとに、サーバから取り出される行の数。これは、ユーザへ渡される行の数ではありません。この設定により、ネットワーク上のトラフィックを減少させ、パフォーマンスを向上させることができます。デフォルト値は 50 です。

Charset (CS)

$SYBASE/charsets のサブディレクトリに対応する文字セット。

CursorCacheSize (CCS)

この属性は、接続キャッシュが保持可能な接続の数を決定します。デフォルト値は 1 です。接続キャッシュを設定するには、SelectMethod 属性を1に設定しなければなりません。接続キャッシュを増やすと、アプリケーションによってはパフォーマンスが改善されますが、より多くのデータベースリソースが必要になります。

Database (DB)

接続するデータベース名。

DataSourceName (DSN)

Sybase データベースへの単一の接続を表す文字列。"Accounting"、"Sys10-Serv1." のように、半角英数字で入力します。

DefaultLongData
BuffLen (DLDBL)

TEXT と IMAGE の列から取得するデータの最大長を 1024 バイトの倍数で指定します。デフォルト値は 1024 です。データが 1M バイトを超える場合は、この設定値を増やす必要があります。

DirectoryService
Provider (DSP)

このデータソースへの接続時に、Sybase Open Client が使用するディレクトリサービスプロバイダを示す文字列。使用可能なディレクトリサービスプロバイダは、Sybase Open Client バージョン 11.1 以上とともにインストールされる Sybase Open Client/Open Server Configuration Utility を使用して探すことができます。これ以外のクライアントを使用している場合は、このオプションは無効です。

EnableQuoted
Identifiers (EQI)

EnableQuotedIdentifiers={0 | 1}。1 を設定すると、引用された識別子が有効になります。デフォルト値は 0 です。

InitializationString (IS)

InitializationString={<Sybase set commands>;...}。接続時に実行する Sybase のコマンドを、< >で囲んで指定します。複数指定する場合は、セミコロンで区切ります。

InterfacesFile (IFILE)

インターフェイスファイルのパス名。

Language (LANG)

$SYBASE/locales のサブディレクトリに対応する言語名。

LogonID (UID)

Sybase データベースへの接続に使用するデフォルトログオン ID。ログオン ID は、データベースのセキュリティ機能が有効な場合にのみ必要です。セキュリティ機能を使用している場合は、システム管理者に連絡して、自分のログオン ID を取得してください。大文字と小文字は区別されます。

OptimizePrepare (OP)

OptimizePrepare={0 | 1 | 2}。この属性は、SQLPrepare が呼び出されるたびにサーバ上にストアドプロシージャを作成するかどうかを決定します。

0 を設定すると、SQLPrepare を呼び出すたびにサーバ上にストアドプロシージャが作成されます。この設定にすると、静的な文の処理時にパフォーマンスが低下します。

1(デフォルト値)を設定すると、SQL 文中にパラメータが含まれている場合にのみストアドプロシージャが作成されます。それ以外の場合は、SQL 文がキャッシュに格納され、SQLExecute により直接実行されます。

2 を設定すると、ストアドプロシージャが作成されません。

PacketSize (PS)

PacketSize={-1 | 0 | x}。この属性は、データベースサーバからクライアントに転送されるネットワークパケットあたりのバイト数を決定します。この属性を適切に設定すると、パフォーマンスを向上させることができます。

0(デフォルト値)を設定すると、Sybase サーバ構成で指定されているデフォルトパッケージサイズが使用されます。

-1 を設定すると、データソースに対する最初の接続時に最大可能パケットサイズが算出され、その値がシステム情報ファイルに保存されます。

x (1 〜 10 のいずれか) を設定すると、 512 バイトにその数をかけた数字を示します (たとえば、6 を設定すると、 6 * 512 = 3072 バイトが各ネットワークパケットのサイズとなります)。

この接続属性を最大限に利用するためには、PacketSize に指定した値以上の最大ネットワークパケットサイズを Sybase サーバに設定する必要があります。 次のように設定します。

sp_configure "maximum network packet size", 
5120
reconfigure
Restart Sybase Server

ODBC 仕様には、この属性と同じ機能を提供する接続オプション、SQL_PACKET_SIZE が定義されています。接続文字列属性と ODBC 接続オプションの両方を設定できるアプリケーションとのコンフリクトを避けるために、これらは相互に排他的であると定義されています。PacketSize が指定されている場合は、SQL_ PACKET_SIZE を呼び出そうとすると、その機能がサポートされていないことを告げるメッセージが表示されます。PacketSize が指定されていない場合は、SQL_PACKET_SIZE に対するアプリケーション呼び出しがドライバによって受け取られます。

Password (PWD)

パスワードで、大文字と小文字は区別されます。

PasswordEncryption (PE)

PasswordEncryption={0 | 1}。この属性は、Open Client Library からサーバへのパスワードを暗号化するかどうかを決定します。0(デフォルト値)を設定すると、暗号化されません。1 を設定すると、パスワードが暗号化されます。

RaiseErrorPosition
Behavior (REPB)

RaiseErrorPositionBehavior={0 | 1}。RAISERROR が発生した場合の、エラーが返されるタイミングおよびカーソルの位置を指定します。

0(デフォルト値)に設定すると、RAISERROR は前後の文から独立して処理されます。RAISERROR が SQLExecute、SQLExecDirect、または SQLMoreResults で処理されると、エラーを返します。結果セットは空です。

1(Microsoft互換)を設定すると、RAISERROR は次の文で処理されます。次の文が処理されるときにエラーを返し、カーソルは後に続く結果セットの 1 行目に置かれます。この場合は、1 回の実行で複数の RAISERROR が返る可能性があります。

SecurityService
Provider (SSP)

このデータソースへの接続時に、Sybase Open Client が使用するセキュリティサービスプロバイダを示す文字列。使用可能なセキュリティサービスプロバイダは、Sybase Open Client バージョン 11.1 以上とともにインストールされる Sybase Open Client/Open Server Configuration Utility を使用して探すことができます。これ以外のクライアントを使用している場合は、このオプションは無効です。

SelectMethod (SM)

SelectMethod={0 | 1}。この属性は、SELECT 文でデータベースカーソルを使用するかどうかを決定します。0(デフォルト値)が設定された場合は、データベースカーソルが使用されます。多くの SELECT 文を連続して実行すると、データベースカーソルの作成によるオーバヘッドのために、処理効率が低下する可能性があります。

1 を設定すると、SELECT文 はデータベースカーソルを使用せずに直接実行されます。この場合は、データソースは 1 つのアクティブな文に限定されます。

ServerName (SRVR)

アクセスする Sybase のサーバ名。指定されない場合は、DSQUERY 環境変数のサーバ名がデフォルト値になります。UNIX 上では、$SYBASE/interfaces ファイルにあるサーバ名です。

WorkstationID (WKID)

クライアントが使用するワークステーション ID。

C.7.3 データ型

以下の表は、Sybase ドライバで使われるデータ型と標準 ODBC データ型との対応関係を示したものです。

Sybase

ODBC

binary

SQL_BINARY

bit

SQL_BIT

char

SQL_CHAR

datetime

SQL_TYPE_TIMESTAMP

decimal

SQL_DECIMAL

float

SQL_FLOAT

image

SQL_LONGVARBINARY

int

SQL_INTEGER

money

SQL_DECIMAL

numeric

SQL_NUMERIC

real

SQL_REAL

smalldatetime

SQL_TYPE_TIMESTAMP

smallint

SQL_SMALLINT

smallmoney

SQL_DECIMAL

sysname

SQL_VARCHAR

text

SQL_LONGVARCHAR

timestamp

SQL_VARBINARY

tinyint

SQL_TINYINT

varbinary

SQL_VARBINARY

varchar

SQL_VARCHAR

C.7.4 サポートする分離レベルとロックレベル

サポートされる分離レベルは、レベル 0 サーバのバージョンが 11 以上の場合、レベル 1(コミット後に読み出し、デフォルト値)およびレベル 3(直列化可能)です。また、ページレベルのロックをサポートしています。分離とロックの詳細については、『Connect ODBC リファレンス』の『付録 D ロックレベルと分離レベル 』 を参照してください。

C.7.5 ODBC 対応レベル

Sybase ドライバがサポートしている関数については、『Connect ODBC リファレンス』の『付録 C ODBC API 関数とスカラ関数』に説明されています。また、次の関数もサポートされています。

また、基本 SQL 文法をサポートしています。

C.7.6 接続形態と文の数

Sybase ドライバでは、複数接続および、各接続ごとの複数の文の実行をサポートしています。また、SelectMethod 属性が 1 に設定されている場合は、Sybase データソースでは、手動コミットモードでアクティブとなる文が 1 つのみとなります。

C.8 Connect ODBC テキストドライバ

テキストドライバは、ASCII テキストファイルをサポートしています。これらのファイルには、バイナリ形式で保存されているデータが含まれないため、テキストエディタやワードプロセッサで直接、印刷および編集することができます。

テキストドライバのファイル名については、Micro Focus DataDirect 製品に付属の README ファイルを参照してください。

テキストドライバは、テキストファイルに対して直接 SQL 文を実行します。INSERT 文もサポートされており、ファイルの末尾にレコードが追加されます。また、状況によっては、UPDATE 文および DELETE 文も実行可能です。

C.8.1 テキストファイルのフォーマット

表 16-1.は、一般的なテキストファイルフォーマットの一覧です。

フォーマット

内容

Comma-separated values(コマンド分割)

各列の値をコンマで区切ったファイルで、各行がそれぞれ別々のレコードに該当します。列の値の長さは可変です。このフォーマットのファイルには、通常、拡張子として .CSV が用いられます。

Tab-separated values(タブ分割)

各列の値をタブで区切ったファイルで、各行がそれぞれ別々のレコードに該当します。列の値の長さは可変です。

Character-separated values(文字分割)

各列の値をプリント可能な文字(ただし、一重引用符と二重引用符は除く)で区切ったファイルで、各行がそれぞれ別々のレコードに該当します。列の値の長さは可変です。

Fixed(固定長)

区切り文字がなく、各列の値が各行ですべて同じ位置で始まるファイルです。また、行の長さは全部同じです。ファイルを表示すると、各列の値がすべて縦に揃って見えます。この場合も 1 行が 1 レコードです。

Stream(ストリーム)

列の区切り文字がなく、また、レコードの区切りもないファイルです。つまり、表は、1 本の長いバイトストリーム(バイトの連なり)として表現されます。

これらのフォーマットのうち、コンマ分割、タブ分割、および文字分割のテキストファイルは、まとめて文字区切りファイルと総称されます。これは、いずれも何らかの文字で値が区切られているためです。

C.8.2 UNIX プラットフォームでの表構造の定義

すべてのテキストファイルが同じ構造(フォーマット)を持っているわけではありません。このため、テキストドライバでは、既存のファイルの構造を定義するオプションが提供されています。ここで説明する表構造の定義は、必ず行わなければならないわけではありません(テキストドライバは、列の名前とデータ型の推測機能を使用して推測することができます)が、定義が非常に役に立つ場合もあります。

UNIX の場合は、テキストファイルの構造の定義は、QETXT.INI ファイルを作成して行います。QETXT.INI ファイルは、vi などの通常のテキストエディタで作成します。QETXT.INI ファイルの名前はすべて大文字でなければなりません。定義する表はすべて、このファイルにより指定されます。このファイルでテキストファイルを定義すると、システム情報ファイルおよび接続文字列で指定されている属性に優先して使用されます。

QETXT.INI ファイルによるテキストファイルの構造の定義は、次のようにして行います。

  1. [Defined Tables] セクションを作成し、ここに定義する表を記述します。まず、テキストファイルの名前を指定し(テキストファイルの名前は、実際のファイルに応じて大文字または小文字を用います)、その後にそのテキストファイルに格納する表の名前を記述します(表は複数指定できます)。たとえば、次のようになります。

    emptxt.txt=EMP 
    

    表名は 32 字以内でなければなりません。また、同一のデータベース内の他の表と同じ名前を記述することはできません。この名前が、SQLTables により返されます。デフォルトでは、拡張子を除いた名前が返されます。

  2. 記述した表(複数記述したときは、その全部)について、テキストファイルの名前(FILE=)、表の種類(TT=)、ファイルの最初の行の列名の有無(FLN=)および区切り文字の種類(DC=)を指定します。

    たとえば、テキストファイルの名前は、次のようにして指定します。

    FILE=emptxt.txt 
    

    表の種類を指定するには、各フィールドの区切り文字、Comma(コンマ区切り)、Tab(タブ区切り)、Character(文字区切り)、Fixed(固定長)、または Stream(ストリーム)を記述します。たとえば、次のように記述します。

    TT=COMMA 
    

    表の種類が Character(任意の文字)の場合は、実際の区切り文字を指定しなければなりません。たとえば、区切り文字がセミコロンの場合は、次のように記述します。

    DC=;
    

    さらに、最初の行に列名があるかどうかを 1(列名がある)または 0(列名がない)で示します。たとえば、次のようになります。

    FLN=0
    

  3. 表の各フィールド(列)について定義を行います。この場合、最初の行を FIELD1 とし、フィールド(列)名、フィールドの種類、精度、スケール、長さ、オフセット(Fixed の場合)、日付 / 時間マスクの順で定義していきます。なお、日付マスクについては、『日付マスク』で説明されています。

    各要素の値は、コンマで区切ります。以下は、フィールドが 2 つの場合の記述例です。

    FIELD1=EMP_ID,VARCHAR,6,0,6,0,
    
    FIELD2=HIRE_DATE,DATE,10,0,10,0,m/d/yy
    

  4. 定義が終わったら、ファイルを QETXT.INI として保存します。ドライバは、システム情報ファイルの属性、Database で指定されているディレクトリ、またはカレントのディレクトリでこのファイルを探します。

C.8.2.1 QETXT.INI の例

以下は、QETXT.INI ファイルの例です。ここでは、ファイル、emptext.txt の定義を行っています。emptext.txt はデータファイルで、サンプルとして付属しています。

[Defined Tables]
emptext.txt=EMP

[EMP]
FILE=emptext.txt
FLN=1
TT=Comma
Charset=ANSI
FIELD1=FIRST_NAME,VARCHAR,10,0,10,0,
FIELD2=LAST_NAME,VARCHAR,9,0,9,0,
FIELD3=EMP_ID,VARCHAR,6,0,6,0,
FIELD4=HIRE_DATE,DATE,10,0,10,0,m/d/yy
FIELD5=SALARY,NUMERIC,8,2,8,0,
FIELD6=DEPT,VARCHAR,4,0,4,0,
FIELD7=EXEMPT,VARCHAR,6,0,6,0,
FIELD8=INTERESTS,VARCHAR,136,0,136,0,

C.8.3 日付マスク

日付マスクを使用して、日付がテキストファイルに格納される場合の書式を指定することができます。値は、テキストファイルに挿入される際に、この日付マスクに従ってフォーマットされ、格納されます。また、テキストファイルから値が読み出されるときには、フォーマット済みの日付から通常の日付データへと変換されます。

以下の表は、日付マスクの指定に使用可能な記号と、その意味の一覧です。

記号

内容

m

月が数値(1 〜12 )で出力されます。

mm

月が 9(月)までの場合、左側に 0 が付けられます。

mmm, Mmm, MMM

月が 3 文字の略号で出力されます。この場合、m は小文字、M は大文字を表します(つまり、1 月であればそれぞれ、jan 、Jan 、JAN となります)。

mmmm, Mmmm, MMMM

月が正式名で出力されます。この場合、m は小文字、M は大文字を表します(つまり、1 月であればそれぞれ、january 、January 、JANUARY となります)。

d

日が数値(1 〜31 )で出力されます。

dd

日が 9(日)までの場合、左側に 0 が付けられます。

ddd, Ddd, DDD

曜日が 3 文字の略号で出力されます。この場合、d は小文字、D は大文字を表します(つまり、月曜であればそれぞれ、mon 、Mon 、MON となります)

dddd, Dddd, DDDD

曜日が正式名で出力されます。d は小文字、D は大文字を表します(つまり、月曜であればそれぞれ、monday 、Monday 、MONDAY となります)。

yy

年が 2 桁の数値で出力されます。

yyyy

年が 4 桁の数値で出力されます。

J

年がユリウス値で出力されます。ユリウス値とは、紀元前 4712 年を基準として、その後の時間を日数で表したものです。

\ - . : , (space)

特殊文字で、日付の各部分を区切るのに使います。

\

次の文字が出力されます。たとえば、mm/dd/yyyy\A\D というマスクの場合、テキストファイルでは 10/01/1993AD と表現されます。

"string", 'string'

テキストファイルに「文字列」が出力されます。

以下の表は、日付、マスク、テキストファイルでの表現形式を示したものです。

日付

マスク

テキストファイル

1993-10-01

yyyy-mm-dd

1993-10-01

m/d/yy

10/1/93

Ddd, Mmm dd, yyyy

Fri, Oct 01, 1993

C.8.4 データソースの設定および接続

データソースを設定するには、下記の表に示されているデータソース定義を使用する必要があります。 システム情報ファイルの設定に関する詳細については、『UNIX 環境』を参照してください。

アプリケーションから接続文字列を使ってデータソースに接続する場合は、データソース名を指定する必要があります。データソースの指定により、システム情報中でドライバにより使われるセクションが決定され、そこに記述されているデフォルトの接続情報がドライバによって読み取られます。また、システム情報ファイル中に記録されているデフォルトの接続情報は、接続文字列で属性と値を対で指定して、上書きすることができます。ただし、接続文字列で指定した情報は、システム情報に優先して使用されるだけで、実際にシステム情報ファイルに書き込まれることはありません。

接続文字列では、属性をフルネームまたは略号で入力します。接続文字列の書式は、次のとおりです。

DSN=data_source_name[;attribute=value[;attribute=value]...]

ここで、data_source_name はデータソース名、attribute は属性、value は属性の値です。また、DSN は、属性、DataSourceName の略号です。テキストファイルの場合の接続文字列は、次の例のようになります。

DSN=TEXT FILES;TT=CHARACTER;DC=&

以下の表は、各種属性のフルネームと略号(かっこ内)、および属性の内容の一覧です。システム情報ファイルでは、属性のフルネームのみが使用されます。

この表にあるデフォルト値は、接続文字列やシステム情報ファイルのデータソース定義に値が指定されていない場合に使用される初期値です。データソースの設定時に属性の値を指定した場合は、その値がデフォルト値となります。

属性

説明

AllowUpdateAnd
Delete (AUD)

AllowUpdateAndDelete={0 | 1}。このデータソースで UPDATE 文と DELETE 文を使えるようにするかどうかを設定します。デフォルトは 0 です。UPDATE と DELETE 文は、表の内容をただちに変更するため、一度に表を操作できるのは、1 つの接続のみとなっています。1 を設定すると、その時点の接続以外では表を開くことができなくなります。テキストファイルの更新、削除によりそのファイルに重大な変更が行われ、パフォーマンスも低下します。パフォーマンスが重要な要因である場合は、他の適切なデータベースの使用をお奨めします。

ApplicationUsing
Threads (AUT)

ApplicationUsingThreads={0 | 1}。アプリケーションがマルチスレッドかどうかに応じて値を設定します。1 を指定すると、ドライバがマルチスレッドアプリケーション対応となります。シングルスレッドのアプリケーションの場合は、0 を指定します。こうすると、ODBC スレッド保護標準に関連する処理が行われなくなります。

CacheSize (CSZ)

データベースのレコードのキャッシュサイズで、64KB を 1(ブロック)として指定します。この値が大きいほど、パフォーマンスが向上します。指定可能な最大値は、システムメモリに依存します。このサイズが 0 より大きく設定された状態で一度開いたデータを再び表示させる場合は、他のユーザにより行われた更新は、再度 SELECT 文を実行しなければ検出できません。デフォルト値は 4(4 × 64=256KB )です。

Database (DB)

テキストファイルが格納されているディレクトリを指定します。

DataFileExtension (DFE)

データファイルの拡張子として使う文字を 3 字以内で指定します。デフォルト値は TXT です。ここで指定した文字列が、CREATE TABLE 文で使われます。CREATETABLE 文の実行時に、その文中のデータファイルの拡張子が、ここで指定した文字列と異なる場合はエラーが発生します。

CREATE TABLE 文以外の文、たとえば、SELECT 文や INSERT 文では、データファイルの拡張子は、必ずしもここで指定した文字列である必要はありません。また、これらの文でデータファイルの拡張子が指定されていない場合は、ここで指定された文字列が使われます。

DataSourceName (DSN)

このデータソースの名前を入力します。この名前がシステム情報に記録されます。Accounting、Text Files のように、半角英数字で入力します。

DecimalSymbol (DS)

DecimalSymbol={. | ,}。これは、データが格納されるときに使われる 10 進数セパレータ(3 桁ごとの区切り文字)です。DML 文とパラメータバッファでは、国際 10 進数記号の (.) を使用する必要があります。

Delimiter (DC)

文字区切りのファイルで使われる区切り文字を指定します。一重引用符および二重引用符以外の印刷可能文字を指定できます。デフォルトでは、,(コンマ)が指定されています。

ExtraExtensions (EE)

テキスト表として認識されるべきファイル拡張子の一覧を指定します。アプリケーションから表の抽出が要求された場合は、ここで定義済みの表のみが抽出されますが、この属性に拡張子をコンマで区切って列挙しておくと、未定義であっても、その拡張子を持つファイル名の表も抽出されます。また、拡張子のない表を抽出させる場合は、キーワード、None を指定します。

FileOpenCache (FOC)

キャッシュに対してオープンできる未使用ファイルの最大数を指定する値。たとえば、この属性が 4 に設定されている場合は、ユーザが 4 つの表を開いた後、それらを閉じても実際には閉じられません。つまり、4 つの表がドライバにより、開かれたままの状態で保持されるため、これらのいずれかに対してクエリーが実行されたときに、もう一度表を開く必要がありません。したがって、この属性を使用するとパフォーマンスが向上します。ただし、キャッシュされているファイル(表)を、ロックとともに開こうとするとロックコンフリクトが起こる可能性があります。デフォルト値は 0 で、表はまったくキャッシュされません。

FirstLineNames (FLN)

FirstLineNames={0 | 1}。この属性で、ファイルの最初の行の列名に対して、ドライバによる検索が行われるかどうかを指定することができます。1 を設定すると、最初の行は列の名前であると見なされます。0 を設定すると、最初の行もレコードであると見なされます。

IntlSort (IS)

IntlSort={0 | 1}。この属性により、ORDER BY 節がある SELECT 文が実行された場合のレコードの出力順が決定されます。0 (デフォルト)を指定すると、ASCII ソート順が適用され、大文字が小文字に優先して並べ替えが行われます。たとえば、「A、b、C」をソートすると、「A、C、b」と並べられます。

1 を指定すると、使用しているオペレーティングシステムの規則にしたがってレコードがソートされます。この場合は、「A 、b 、C 」のように、つねにアルファベット順に並べられ、大文字と小文字は区別されません。記号やその他の文字種について詳しくは、オペレーティングシステムのマニュアルをご覧ください。

ScanRows (SR)

テキストファイルの列のデータ型を判別するのに必要な行数を整数で指定します。値を 0 にしておくと、表全体がスキャンされます。デフォルト値は 25 です。

TableType (TT)

TableType={Comma | Tab | Character | Fixed | Stream}。ここで指定した表の種類がドライバに伝えられ、表の新規作成や未定義の表を開く際に使用されます。

UndefinedTable (UT)

構造が定義されていない表があった場合の処理の方法を設定します。Prompt を設定すると、ダイアログボックスが表示され、ユーザがファイルフォーマットを記述することができます。Guess(デフォルト)を設定すると、ファイルのフォーマットがドライバにより推測されます。


注:この表の属性のうち、ScanRows 、TableType 、Delimiter 、FirstLineNames 、DecimalSymbol 、Charset は、新規に定義される表に対してのみ有効です。また、この 4 つの属性は、CREATE TABLE 文を使って表を新たに作成する場合にも有効となります。


C.8.5 データ型

以下の表は、テキストファイルのデータ型と標準 ODBC データ型との対応関係を示したものです。

テキストデータ型

ODBC データ型

Numeric

SQL_NUMERIC

Date

SQL_TYPE_DATE

Varchar

SQL_VARCHAR

C.8.6 SELECT 文

テキストドライバでは、SQL 文を使って列の指定とレコードの取り出しが可能です。ドライバでは、『Connect ODBC リファレンス』の『付録 A フラットファイルドライバと SQL 文』で説明されているようにすべての SELECT 文節がサポートされています。

C.8.7 ALTER TABLE 文

テキストドライバは、ALTER TABLE 文をサポートしており、この文を使って表に列(複数可)を追加することができます。また、単一の列を削除することもできます。

ALTER TABLE 文の書式は次のとおりです。

ALTER TABLE table_name
{ADD column_name data_type
| ADD (column_name data_type
[,column_name data_type] ...)
| DROP [COLUMN] column_name
}

ここで、table_name は、列の追加または削除を行う表の名前です。column_name は、追加する列の名前です。また、削除の場合は、ここに削除する列を指定します。data_type は、追加する列のデータ型です。

たとえば、表、emp に 2 つの列を追加する場合は、次のようになります。

ALTER TABLE emp (ADD startdate date, dept 
varchar(10))

1 つの ALTER TABLE 文で列の追加と削除の両方を行うことはできません。また、列の削除は、一度に 1 列に限られます。以下は、列の削除の記述例です。

ALTER TABLE emp DROP startdate

列にオブジェクト、たとえば、インデックスやビューなどが設定されている場合に、その列に対して ALTER TABLE 文で削除を行うとエラーが発生します。

C.8.8 ODBC 対応レベル

Text ドライバがサポートしている関数については、『Connect ODBC リファレンス』の『付録 C ODBC API 関数とスカラ関数』に説明されています。また、SQLSetPos 関数もサポートされています。

さらに、SQLExtendedFetch および SQLFetchScroll でのバックワードフェッチとランダムフェッチがサポートされており、基本 SQL 文法がサポートされています。

C.8.9 接続形態と文の数

テキストドライバは、複数接続および、各接続ごとの複数文の実行をサポートしています。


Copyright © 2002 Micro Focus International Limited. All rights reserved.
本書ならびに使用されている固有の商標と商品名 は国際法で保護されています。

前へCOBSQL エラーメッセージ 埋め込み SQL 文次へ