![]() | COBSQL エラーメッセージ | 埋め込み SQL 文 | ![]() |
サポートされる UNIX プラットフォームについては、Micro Focus にお問い合わせください。
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
システム情報ファイルの場所の検索順序は次のとおりです。
InstallDir キーワードを含むシステム情報ファイルには、[ODBC] セクションを入れる必要があります。 このキーワードの値は、/lib および /messages ディレクトリを含むディレクトリのパスにしなければなりません。 たとえば、デフォルトのインストールディレクトリを選択する場合、[ODBC] 節に次の行を入れる必要があります。
InstallDir=/opt/odbc
次の例で、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
Connect ODBC ドライバでは、環境変数を設定する必要があります。
ODBC ホームディレクトリにある適切なシェルスクリプトを実行することによって、ほとんどの変数を設定できます。
ODBC 対応アプリケーションを使用する前に次のコマンドを実行して、使用している環境を初期化します。
C シェル (および関連シェル)
% source odbc.csh
Bourne シェル (および関連シェル)
$ . odbc.sh
これらのスクリプトを実行すると、適切なライブラリ検索パスの環境変数 (Solaris の場合には LD_LIBRARY_PATH、 HP/UX の場合には SHLIB_PATH、AIX の場合には LIBPATH) が設定されます。
ライブラリ検索パスの環境変数は、実行時に ODBC コアコンポーネントおよび ODBC ドライバを配置できるように設定する必要があります。
多くの Connect ODBC ドライバには、そのドライバで使用されるデータベースのクライアントコンポーネントに応じて環境変数を設定する必要があります。 各ドライバの要件に関する詳細情報については、各ドライバに関する『システム環境』を参照してください。
ODBCINI は、すべての Connect ODBC ドライバを認識する省略可能な環境変数です。 ODBCINI を使用してデフォルトファイル以外のシステム情報ファイルを配置します。ODBCINI の詳細については、 『システム情報ファイル (.odbc.ini)』を参照してください。
Connect ODBC ドライバでは、2 バイト文字セットを使用できます。別の文字セットを明示的に示す場合以外は通常、デフォルトのロケール、C によって定義される文字セットを使用します。 デフォルトのロケール、C は、ISO 8859-1 が有効な文字に限定された 7 ビット ASCII 文字セットに対応します。ロケールを別の文字セットに設定するには、次の手順に従ってください。
setlocale (LC_ALL, "");
この行は、標準 UNIX 関数です。X/Open 準拠の文字処理関数で使用される標準 UNIX 関数として、環境変数 LANG によって示される文字セットが選択されます。この行を追加しない場合、または LANG を設定しない、あるいは NULL に設定する場合に、デフォルトのロケール、C が使用されます。
locale -a を使用して、システムでサポートされているすべての文字セットを表示できます。詳細については、locale および setlocale の MAN ページを参照してください。
UNIX 環境では、設定問題 (環境変数が正確に設定されていない、DBMS クライアントコンポーネントが足りないなど) の診断に役立つ ivtestlib ツールが提供されます。 このコマンドを実行すると、特定の ODBC ドライバのロード、およびロードが失敗した場合の有効なすべてのエラー情報の印刷が行われます。
たとえば、HP-UX では、/opt/odbc にドライバをインストールする場合には、次のコマンドを使用します。
ivtestlib /opt/odbc/lib/ivinfxx.sl
INFORMIX ドライバがロードされます (xx は、ドライバの番号を表します)。 ドライバをロードできない場合には、ivtestlib により原因を示すエラーメッセージが返されます。
注: Solaris および AIX では、ivtestlib に対してドライバの完全パスを指定する必要はありません。 ただし、HP-UX 版の ivtestlib には完全パスが必要です。
Micro Focus により、変換ライブラリのコーディング用のフレームワークをサポートする、文字コード変換機能のサンプルが提供されています。
文字コード変換を実行するシステム情報ファイルのデータソースに、TranslationSharedLibrary キーワードを追加する必要があります。 TranslationOption キーワードの追加は省略可能です。
|
キーワード |
定義 |
|---|---|
|
TranslationSharedLibrary |
変換ライブラリの完全パス |
|
TranslationOption |
32 ビット変換オプションの ASCII 表記 |
詳細については、DataDirect Connect ODBC のマニュアルを参照してください。
クライアント側には、次のソフトウェアが必要です。
Solaris
HP-UX
AIX
サーバ側には、次のソフトウェアが必要です。
DB2 にアクセスするには、このセクションで説明されているプロセスに従って、 DataDirect バインドファイルをバインドし、権限を付与する必要があります。
シェルプロンプトで db2 と入力し、DB2 コマンド行プロセッサに入ります。
注: DB2 コマンドプロセッサのプロンプトは、db2=> です。
DB2 コマンド行プロセッサ内では、最初の手順として、次の構文を使用して DB2 データベースに接続します。
db2=> CONNECT TO <database_name> USER <userid>
USING <password>
次の手順では、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
データソースを設定するには、下記の表に示されているデータソース定義を使用する必要があります。 システム情報ファイルの設定に関する詳細については、『UNIX 環境』を参照してください。
アプリケーションから接続文字列を使ってデータソースに接続する場合には、 データソース名を指定する必要があります。データソースの指定により、システム情報ファイルでドライバにより使われるセクションが決定され、 そこに記述されているデフォルトの接続情報がドライバによって読み取られます。 また、システム情報ファイルに記録されているデフォルトの接続情報は、接続文字列で attribute=value 対で指定して上書きすることができます。 ただし、接続文字列で指定した情報は、システム情報ファイルに優先して使用されるだけで、 実際にシステム情報ファイルに書き込まれることはありません。
接続文字列では、フルネームまたは省略名で指定できます。 接続文字列の書式は次のとおりです。
DSN=data_source_name[;attribute=value[;attribute=value]...]
DB2 の接続文字列の例
DSN=DB22 TABLES;DB=PAYROLL;UID=JOHN;PWD=XYZZY;GRP=ACCTNG
次の表は、各種属性のフルネームと省略名、および属性の内容の一覧です。
この表にあるデフォルト値は、接続文字列やシステム情報ファイルのデータソース定義に値が指定されていない場合に使用される初期値です。データソースの設定時に属性の値を指定した場合は、その値がデフォルト値となります。
|
属性 |
説明 |
|---|---|
|
ApplicationUsing |
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 を指定します。 |
次の表は、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 のデータ型はサポートされていません。
DB2 ドライバは、分離レベル 0 (コミット前に読み出し)、1 (コミット後に読み出し)、 2 (繰り返し読み出し) をサポートしています。また、レコードレベルのロックもサポートしています。 分離とロックの詳細については、『Connect ODBC リファレンス』の『付録 D ロックレベルと分離レベル 』 を参照してください。
DB2 ドライバがサポートしている関数については、『Connect ODBC リファレンス』の『付録 C ODBC API 関数とスカラ関数』に説明されています。また、次の X/Open 関数もサポートされています。
また、基本 SQL 文法がサポートされています。
DB2 データベースシステムは、単一接続、および各接続ごとの複数の文の実行をサポートしています。
dBASE ドライバは、UNIX 環境で dBASE IV および V をサポートしています。
dBASE ドライバは、dBASE と互換性のあるファイルを使用して SQL 文を直接実行します。 よって、それらのファイルにアクセスするために dBASE 製品を使用する必要はありません。
dBASE ドライバのファイル名については、DataDirect 製品に添付されている README ファイル を参照してください。
dBASE のインデックスファイルには、データベースファイルにある各インデックスのインデックスタグが含まれています。 そのタグを固有の属性としてマーキングすることができます。つまり、ドライバはインデックスタグを定義する列に重複した値がないかを 確認します。ただし、dBASE 製品または FoxPro 製品には、固有の属性がサポートされていません。 固有の属性を設定および認識するには、DataDirect dBASE ドライバの拡張機能を使用します。 DataDirect dBASE ドライバに、インデックスタグが固有であることを通知する必要があります。これにより、そのドライバを使って作成された固有のインデックスに設定する必要はありません。 そのドライバを使って作成されていないファイルを使用する場合には、次に説明されているように固有のインデックスタグを定義する必要があります。
データベースおよびインデックスファイルが配置されたディレクトリでは、vi などの任意のプレーンテキストエディタ を使用して、QEDBF.INI を次のように定義または編集します。
filename の場所に [filename] 節を作成します。
大文字/小文字を区別して入力し、ファイルの拡張子を付けます。
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
データソースを設定するには、下記の表に示されているデータソース定義を使用する必要があります。 システム情報ファイルの設定に関する詳細については、『UNIX 環境』を参照してください。
アプリケーションから接続文字列を使ってデータソースに接続する場合には、 データソース名を指定する必要があります。データソースの指定により、システム情報ファイルでドライバにより使われるセクションが決定され、 そこに記述されているデフォルトの接続情報がドライバによって読み取られます。 また、システム情報ファイルに記録されているデフォルトの接続情報は、接続文字列で attribute=value のように指定して上書きすることができます。 ただし、接続文字列で指定した情報は、システム情報ファイルに優先して使用されるだけで、 実際にシステム情報ファイルに書き込まれることはありません。
接続文字列では、フルネームまたは省略名で指定できます。 接続文字列の書式は次のとおりです。
DSN=data_source_name[;attribute=value[;attribute=value]...]
dBASE の接続文字列の例
DSN=DBASE FILES;LCK=NONE;IS=0
次の表は、各種属性のフルネームと省略名、および属性の内容の一覧です。システム情報ファイルでは、属性のフルネームのみが使用されます。
この表にあるデフォルト値は、接続文字列やシステム情報ファイルのデータソース定義に値が指定されていない場合に使用される初期値です。データソースの設定時に属性の値を指定した場合は、その値がデフォルト値となります。
|
属性 |
説明 |
|---|---|
|
ApplicationUsing |
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 |
システム情報ファイルの 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 |
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 文字) が使用されます。 |
次の表は、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 で値が求められ、浮動値として返されます。
SQL 文 (SELECT、INSERT など) の列名の長さは、最大 10 文字です。 列名には、アルファベット文字およびハイフン (-) を入れることができます。 最初の文字は、アルファベット文字 (a 〜 z) にする必要があります。
SQL 文を使って列の指定とレコードの取り出しが可能です。 dBASE の SELECT 文では、Connect ODBC リファレンス』の『付録 A フラットファイルドライバと SQL 文』 で説明されているようにすべての SELECT 文の句がサポートされています。 このセクションでは、dBASE 固有 (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
dBASE ドライバは、ALTER TABLE 文をサポートしており、この文を使って表に列 (複数可) を追加することができます。 また、単一の列を削除することもできます。
ALTER TABLE 文の書式は次のとおりです。
ALTER TABLEtable_name{ADDcolumn_namedata_type| ADD
(column_namedata_type[,column_namedata_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 文を使って削除すると、エラーが発生します。
作成するインデックスのタイプは、システム情報ファイルまたは接続文字列で設定する 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 インデックスを作成できます。 |
||||||
インデックスの削除に使用する構文は次のとおりです。
DROP INDEX table_name.index_name
ここで、table_name は、拡張子を除いた dBASE ファイルの名前です。
dBASE ファイルからレコードを削除しても、そのレコードは実際には除去されません。 その代わり、レコードは削除済みとしてマーキングされます。 また、メモフィールドを更新すると、ファイルのメモリが浪費されます。削除されたレコードを除去し、 メモフィールドの未使用メモリを解放するには、 PACK 文を使用する必要があります。次のような書式になります。
PACK filename
ここで、filename は、PACK 文を実行する dBASE ファイルの名前です。
拡張子、.DBF がない場合には、自動的に追加されるため、拡張子、.DBF を入力する必要はありません。
次の例のようになります。
PACK emp
他のユーザによって開かれているファイルに PACK 文を実行することはできません。 また、手動によるコミットモードで PACK 文を使用することもできません。
指定したファイルの場合、PACK 文を使って次の動作が実行されます。
dBASE ドライバを使って、ネットワーク上で dBASE ファイルを共用するアプリケーションを構築および実行することができます。複数のユーザが共用データベースにアクセスしてアプリケーションを実行しているときはいつでも、変更しようとしているレコードをアプリケーションからロックします。 レコードをロックすると、他のユーザによるレコードのロック、更新、または削除が行われなくなります。
dBASE ドライバでは、3 つのロックレベル (NONE、RECORD、および FILE) がサポートされています。 接続文字列 (LCK=) でそれらのレベルを設定できます。
ロックしない場合は、パフォーマンスが最適となりますが、シングルユーザ環境に限定されます。
レコードまたはファイルをロックすると、 INSERT、UPDATE、DELETE、または SELECT...FOR UPDATE 文の実行時にデータベースの表がロックされます。 ユーザがトランザクションをコミットすると、ロックが解除されます。ロックを設定すると、他のユーザによるロックされたオブジェクトの変更が行われなくなりますが、リーダーはロックされません。
レコードをロックすると、文により影響を受けるレコードのみがロックされます。 また、表を変更する他のユーザとの同時性が提供されます。
ファイルをロックすると、表にあるすべてのレコードがロックされます。また、レコードの変更頻度がごく少ない場合、 おもに 1 人のユーザがレコードを変更する場合、または大量のレコードを変更する場合には、 オーバーヘッドが低下し、パフォーマンスが向上します。
ファイルに配置できるロック数は制限されています。 サーバから dBASE ファイルにアクセスしている場合、その制限はサーバに依存します (サーバのマニュアルを参照してください)。
UPDATE または DELETE 文を実行すると、その文により影響を受けるレコードがロックされます。 ドライバによりその変更内容がコミットされた後にロックが解除されます。 手動によるコミットモードを設定した場合、アプリケーションでトランザクションがコミットされるまで ロックが保持されます。自動コミットモードを設定した場合は、文が実行されるまでロックが保持されます。
SELECT...FOR UPDATE 文を実行すると、レコードがフェッチされる場合に限り、レコードがロックされます。 レコードを更新する場合は、その変更内容がコミットされるまでロックが保持されます。 それ以外の場合は、次のレコードがフェッチされると、ロックが解除されます。
dBASE ドライバは、分離レベル 1 をサポートしています。また、ファイルレベルおよびレコードレベルのロックもサポートしています。 分離とロックの詳細については、『Connect ODBC リファレンス』の『付録 D ロックレベルと分離レベル 』 を参照してください。
dBASE ドライバがサポートしている関数については、『Connect ODBC リファレンス』の『付録 C ODBC API 関数とスカラ関数』に説明されています。また、SQLSetPos 関数もサポートされています。
さらに、SQLExtendedFetch および SQLFetchScroll でバックワードフェッチとランダムフェッチが使用できます。 また、基本 SQL 文法がサポートされています。
dBASE ドライバは、複数接続、および各接続ごとの複数の文の実行をサポートしています。
次のコマンドを使って、環境変数、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 が必要です。
データソースを設定するには、下記の表に示されているデータソース定義を使用する必要があります。 システム情報ファイルの設定に関する詳細については、『UNIX 環境』を参照してください。
アプリケーションから接続文字列を使ってデータソースに接続する場合は、データソース名を指定する必要があります。データソースの指定により、システム情報中でドライバにより使われるセクションが決定され、そこに記述されているデフォルトの接続情報がドライバによって読み取られます。また、システム情報中に記録されているデフォルトの接続情報は、接続文字列で属性と値を対で指定して、上書きすることができます。ただし、接続文字列で指定した情報は、システム情報に優先して使用されるだけで、実際にシステム情報に書き込まれることはありません。
接続文字列では、属性をフルネームまたは省略名で指定します。接続文字列の書式は、次のとおりです。
DSN=data_source_name[;attribute=value[;attribute=value]...]
ここで、data_source_name はデータソース名、attribute は属性、value は属性の値です。また、DSN は、属性、DataSourceName の略号です。Informix の場合の接続文字列は、次の例のようになります。
DSN=INFORMIX TABLES;DB=PAYROLL
以下の表は、各種属性のフルネームと略号(かっこ内)、および属性の内容の一覧 です。システム情報ファイルでは、属性のフルネームのみが使用されます。
この表にあるデフォルトは、接続文字列やシステム情報ファイルのデータソース定義に値が指定されていない場合に使用される初期値です。データソースの設定時に属性の値を指定した場合は、その値がデフォルト値となります。
|
属性 |
説明 |
|---|---|
|
ApplicationUsing |
ApplicationUsingThreads={0 | 1}。アプリケーションがマルチスレッドかどうかに応じて値を設定します。1 を指定すると、ドライバがマルチスレッドアプリケーション対応となります。シングルスレッドのアプリケーションの場合は、0 を指定します。これにより、ODBC スレッド保護標準に関連する処理が行われなくなります。 |
|
CancelDetect |
この属性の設定により、ユーザは、スレッドされたアプリケーションによる長時間にわたるクエリーを取り消すことができます。ドライバが、要求が SQLCancel を使用して取り消されたことをチェックする頻度を設定します。たとえば、CDI=5 と設定すると、まだ応答されていない要求ごとに、ユーザが SQLCancel を使用して取り消したかどうかを 5 秒ごとにチェックします。デフォルト値は 0 で、この場合は実行が完了するまで要求は取り消されません。 |
|
CursorBehavior (CB) |
CursorBehavior={0 | 1}。各トランザクション終了後に、カーソルを保持するか、クローズするかを決定します。1(保持する)または 0(クローズする−デフォルト値)を指定することができます。1 を指定すると、カーソルをトランザクションが終了した時点の位置に保持することができます。ただし、これがデータベースのパフォーマンスに影響を及ぼす可能性があります。 |
|
Database (DB) |
接続するデータベースの名前です。 |
|
DataSourceName (DSN) |
システム情報に保管されるデータソース名です。Accounting、INFORMIX-Serv1 のように半角英数字で入力します。 |
|
EnableInsert |
EnableInsertCursors={0 | 1}。この属性により、インサートカーソルを使用するかどうかを設定します。インサートカーソルを使用すると、同じ文を使って複数回の挿入を行う場合のパフォーマンスが向上します。このオプションを設定すると、挿入データはディスクに書き込まれる前にバッファに格納されます。0 を指定するとインサートカーソルは使用されません。デフォルト値は 1 です。 |
|
EnableScrollable |
EnableScrollableCursors={0 | 1}。この属性では、スクロールカーソルを使用できるかどうかを決定します。 デフォルト値は 0 です (スクロールカーソルを使用しない)。 SELECT リストにロング列 (SQL_LONGVARCHAR または SQL_LONGVARBINARY) がない場合に限り、 スクロールカーソルを使用できます。 スクロールカーソルを使用できるように 1 を設定した場合、 SELECT リストにロング列を入れることはできません。 |
|
GetDBListFrom |
GetDBListFromInformix={0 | 1}。この属性で、Informix サーバからデータベースリストを取得するか、もしくはユーザが指定したデータベースリストを表示するかを選択します。 1(デフォルト)を指定すると、Informix サーバからデータベースリストが取り出されます。0 を指定すると、〔ODBC Informix Driver Setup〕ダイアログボックスでユーザが入力したデータベースのリストが表示されます。 |
|
HostName (HOST) |
Informix サーバが置かれているコンピュータの名前です。 |
|
LogonID (UID) |
Informix サーバに登録されている自分のユーザ名です。 |
|
Password (PWD) |
パスワードです。 |
|
ServerName |
Informix データベースを実行しているサーバ名。 |
|
Service (SERV) |
ホストコンピュータで使われているサービスの名前です。この名前は通常、システム管理者が設定します。 |
|
UseDefaultLogin (UDL) |
UseDefaultLogin={0 | 1}。1を指定するとログオン ID と Password が Informix レジストリから直接読み込まれます。デフォルト値は 0 で、ログオンについての情報は、システム情報、接続文字列、〔INFORMIX へのログオン〕ダイアログボックスのいずれかから読み込まれます。 |
以下の表は、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 になります。 |
|
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) が返されます。
接続するデータベースシステムが Informix Online の場合は、分離レベルとして 0(コミット前に読み出し)、1(コミット後に読み出し)、3(直列化可能)をサポートしています。デフォルト値は 1 です。Informix Standard Engine(SE)は、レベル 0(コミット前に読み出し)のみをサポートしています。
また、Informix ドライバは、「カーソルスタビリティ」と呼ばれる分離レベル 1 をサポートしています。アプリケーションは、SQLSetConnectOption(1040,1) を呼び出して、この分離レベルを使用することができます。
Informix ドライバでは、データベースのトランザクションのログが無効になっている場合は、トランザクションは実行されません(ただし、ドライバは自動コミットモードで動作します)。
Informix ドライバは、ページ単位と行単位のロックをサポートしています。
分離とロックの詳細については、『Connect ODBC リファレンス』の『付録 D ロックレベルと分離レベル 』 を参照してください。
INFORMIX ドライバがサポートしている関数については、『Connect ODBC リファレンス』の『付録 C ODBC API 関数とスカラ関数』に説明されています。 また、以下の X/Open 関数もサポートされています。
さらに、接続文字列の属性 EnableScrollableCursors を 1 に設定した場合は、SQLExtendedFetch または SQLFetchScroll でスクロールカーソルが使用できます。 また、コアレベルの SQL 文法がサポートされています。
Informix ドライバは、Informix データベースへの複数接続、および各接続ごとの複数の文の実行をサポートしています。
次のセクションでは、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
データソースを設定するには、下記の表に示されているデータソース定義を使用する必要があります。 システム情報ファイルの設定に関する詳細については、『UNIX 環境』を参照してください。
アプリケーションから接続文字列を使ってデータソースに接続する場合には、 データソース名を指定する必要があります。データソースの指定により、システム情報ファイルでドライバにより使われるセクションが決定され、 そこに記述されているデフォルトの接続情報がドライバによって読み取られます。 また、システム情報ファイルに記録されているデフォルトの接続情報は、接続文字列で attribute=value のように指定して上書きすることができます。 ただし、接続文字列で指定した情報は、システム情報ファイルに優先して使用されるだけで、 実際にシステム情報ファイルに書き込まれることはありません。
接続文字列では、フルネームまたは省略名で指定できます。 接続文字列の書式は次のとおりです。
DSN=data_source_name[;attribute=value[;attribute=value]...]
OpenIngres の接続文字列の例
DSN=INGRES TABLES;SRVR=QESERV;DB=PAYROLL;UID=JOHN
次の表は、各種属性のフルネームと省略名、および属性の内容の一覧です。 システム情報ファイルでは、属性のフルネームのみが使用されます。
この表にあるデフォルト値は、接続文字列やシステム情報ファイルのデータソース定義に値が指定されていない場合に使用される初期値です。データソースの設定時に属性の値を指定した場合は、その値がデフォルト値となります。
|
属性 |
説明 |
|---|---|
|
ApplicationUsing |
ApplicationUsingThreads={0 | 1}。アプリケーションがマルチスレッドかどうかに応じて値を設定します。 デフォルト 1 を設定すると、ドライバがマルチアプリケーション対応と なります。シングルスレッドのアプリケーションの場合は、0 を設定します。これにより、 ODBC スレッド保護標準に関連する処理が行われなくなります。 |
|
Database (DB) |
接続するデータベースの名前です。 |
|
DataSourceName (DSN) |
システム情報ファイルに保管されるデータソース名です。Accounting、INGRES-Serv1 のように半角英数字で入力します。 |
|
DefaultLongData |
アンバウンドされたロングデータの結果列について、クライアントに転送されるデータの最大長を 1024 の倍数で指定します。 デフォルト値は 1024 です。つまり、1024 * 1024 = 1 MB です。 |
|
EnableSelectLoop |
EnableSelectLoop={0 | 1}。この属性により、カーソルではなく選択ループモデルを使って複数の行を検索できます。 デフォルト値は 0 (カーソルを使用) です。 1 を設定すると、選択ループが使用されます。 |
|
LockMode (LM)
|
LockMode={0 | 1 | 2}。行、ページ、または表のロックを選択できます。 オプションは、行 (0)、ページ (1)、表 (2) です。デフォルト値は、ページのロック (1) です。 |
|
LogonID (UID) |
OpenIngres データベースの接続に使用するデフォルトのログオン ID (ユーザ名) です。 データベースのセキュリティが有効な場合のみ必要です。 データベースのセキュリティが有効な場合は、システム管理者に連絡して、自分のログオン ID を取得してください。 |
|
Options (OPTS) |
OpenIngres SQL コマンドで使用できるフラグです。次の例のようになります。
|
|
RepeatedCache |
整数値を指定して、すべての 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 に設定した場合は、次のようになります。
|
|
ServerName (SRVR) |
OpenIngres NETU ユーティリティを使って定義した仮想ノードの名前です。 この仮想ノードにより、呼び出すシステム、呼び出し方法、およびユーザ名およびパスワードが指示されます。 |
|
SQLGrammar (SG) |
SQLGrammar={0 | 1}。OpenSQL を使ってデータソースにアクセスできます。 デフォルトは 0 (INGRES SQL) です。 |
|
ValueReplacement |
ValueReplacement={0 | 1}。この属性では、反復文でハードコード化された値をパラメータに 置き換えるかどうかを決定します。この属性は、動的パラメータを使用しないアプリケーションに有用です。 0 (デフォルト値) を設定すると、パラメータに置き換えられません。 1 を設定すると、ハードコード化された値がパラメータマーカに置き換えられます。 ただし、RepeatedCacheSize 属性を 1 以上にするか、OpenIngres 反復キーワードを使用する必要があります。 このオプションは、カーソルが必要な FOR UPDATE 句を含む SELECT 文、またはパラメータマーカをすでに使用している SELECT 文には影響しません。 この属性では、標準 ODBC SQL 文法のサブセットのみがサポートされています。 パフォーマンスを考慮するため、完全 SQL パーサは利用されません。 たとえば、サブ選択、文字列以外の列の "is NULL" はサポートされていません。 |
次の表は、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 列に配置する場合、その値を読み込むときにエラーが発生します。
OpenIngres ドライバは、分離レベル 1 (コミット後に読み出し) をサポートしています。これがデフォルト値です。また、ページレベルのロックもサポートしています。 分離とロックの詳細については、『Connect ODBC リファレンス』の『付録 D ロックレベルと分離レベル 』 を参照してください。
OpenIngres ドライバがサポートしている関数については、『Connect ODBC リファレンス』の『付録 C ODBC API 関数とスカラ関数』に説明されています。SQLGrammar=1 以外の場合には、SQLProcedures および SQLProcedureColumns 関数もサポートされています。
また、基本 SQL 文法がサポートされています。
OpenIngres データベースシステムは、複数接続、および各接続ごとの複数の文の実行をサポートしています。
接続文字列の属性 RepeatedSelectsに 1 または 2 を設定した場合、ドライバが 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 より前に指定する必要があります。このように指定されていないと、 元のライブラリがロードされ、未解決のシンボルエラーが発生します。
データソースを設定するには、下記の表に示されているデータソース定義を使用する必要があります。 システム情報ファイルの設定に関する詳細については、『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
次の表は、各種属性のフルネームと省略名、および属性の内容の一覧です。システム情報ファイルでは、属性のフルネームのみが使用されます。
この表にあるデフォルト値は、接続文字列やシステム情報ファイルのデータソース定義に値が指定されていない場合に使用される初期値です。データソースの設定時に属性の値を指定した場合は、その値がデフォルト値となります。
Oracle には、オペレーティングシステムのユーザ名とパスワードを使って Oracle に接続する機能があります。 Oracle に接続するには、ユーザ名にスラッシュ( / ) を付け、パスワードはブランクのままにします。 サーバ/クライアントの設定については、Oracle サーバのマニュアルを参照してください。
|
属性 |
説明 |
|---|---|
|
ApplicationUsing |
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 |
DefaultIsolationLevel=文字列値です。同時トランザクションのデフォルトの分離レベルを指定します。 この値は、SQL_TXN_READ_COMMITTED および SQL_TXN_READ_SERIALIZABLE です。 デフォルト値は SQL_TXN_READ_COMMITTED です。 |
|
EnableDescribe |
EnableDescribeParam={0 | 1}。ODBC API 関数の SQLDescribeParam を使用可能にします。 この関数により、すべてのパラメータは SQL_VARCHAR のデータ型で返されます。 Microsoft Remote Data Objects (RDO) を使用してデータにアクセスする場合は、 このオプションを 1 に設定する必要があります。デフォルト値は 0 です。 |
|
EnableScrollable |
EnableScrollableCursors={0 | 1}。データソースにスクロールカーソルを使用可能にします。 キーセットカーソルおよび静的カーソルが使用できます。 データベースのアクセスに Microsoft Foundation Classes を使用する場合は、 このオプションを 1 に設定する必要があります。デフォルト値は 0 です。 |
|
LockTimeOut (LTO) |
Oracle が SELECT...FOR UPDATE 文を処理するときに、ロックの解除を待ってからエラーを発生させるかどうかを指定する値です。 -1 (永久待機) または 0 (待機しない) を指定できます。デフォルト値は 0 です。 |
|
LogonID (UID) |
アプリケーションが Oracle データベースの接続に使用するログオン ID (ユーザ名) です。 データベースのセキュリティが有効な場合のみ必要です。 データベースのセキュリティが有効な場合は、システム管理者に連絡して、自分のログオン ID を取得してください。 オペレーティングシステムのユーザ名を使用する場合は、 『オペレーティングシステムパラメータによる接続』を参照してください。 |
|
PacketSize (PS) |
PacketSize={1024 | 2048 | 4096 | 8192}。TCP/IP 接続の場合のパケットサイズを制御する値です。 指定できる値は 1024、2048、4096、8192 のいずれかです。これ以外の値は無視されます。 この値は、ServerName の属性 (下記に説明されている) が TCP/IP の T に設定されている場合に限り有効です。 |
|
Password (PWD) |
アプリケーションが Oracle データベースの接続に使用するパスワードです。 オペレーティングシステムのパスワードを使用する場合は、『オペレーティング システムパラメータによる接続』を参照してください。 |
|
ProcedureRet |
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 のマニュアルを参照してください。 |
次の表は、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 クライアントの制約のため、非同期操作もサポートしていません。
<結果を返すストアドプロシージャの使用> チェックボックスを選択すると、 ストアドプロシージャ/関数の結果セットが返されるようになります。 また、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 のマニュアルを参照してください。
Oracle ドライバは、分離レベル 1 (コミット後に読み出し)、 3 (直列化可能、サーバのバージョンが Oracle 7.3 以上または 8.x の場合) をサポートしています。また、レコードレベルのロックもサポートしています。
分離とロックの詳細については、『Connect ODBC リファレンス』の『付録 D ロックレベルと分離レベル 』 を参照してください。
Oracle がサポートしている関数については、『Connect ODBC リファレンス』の『付録 C ODBC API 関数とスカラ関数』に説明されています。また、EnableDescribeParam 属性が 1 に設定されている場合は、 SQLDescribeParam もサポートしています。さらに、EnableScrollableCursors 属性が 1 に設定されている場合には、SQLSetPos をサポートするとともに、 SQLFetchScroll および SQLExtendedFetch でスクロールカーソルが使用できます。
Oracle ドライバは、次の X/Open レベルの関数をサポートしています。
また、コアレベルの SQL 文法がサポートされています。
Oracle ドライバは、複数接続、および各接続ごとの複数の文の実行をサポートしています。
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 が必要です。
データソースを設定するには、下記の表に示されているデータソース定義を使用する必要があります。 システム情報ファイルの設定に関する詳細については、『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 |
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 |
TEXT と IMAGE の列から取得するデータの最大長を 1024 バイトの倍数で指定します。デフォルト値は 1024 です。データが 1M バイトを超える場合は、この設定値を増やす必要があります。 |
|
DirectoryService |
このデータソースへの接続時に、Sybase Open Client が使用するディレクトリサービスプロバイダを示す文字列。使用可能なディレクトリサービスプロバイダは、Sybase Open Client バージョン 11.1 以上とともにインストールされる Sybase Open Client/Open Server Configuration Utility を使用して探すことができます。これ以外のクライアントを使用している場合は、このオプションは無効です。 |
|
EnableQuoted |
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 | 0(デフォルト値)を設定すると、Sybase サーバ構成で指定されているデフォルトパッケージサイズが使用されます。 -1 を設定すると、データソースに対する最初の接続時に最大可能パケットサイズが算出され、その値がシステム情報ファイルに保存されます。
この接続属性を最大限に利用するためには、PacketSize に指定した値以上の最大ネットワークパケットサイズを Sybase サーバに設定する必要があります。 次のように設定します。 sp_configure "maximum network packet size", 5120 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 |
RaiseErrorPositionBehavior={0 | 1}。RAISERROR が発生した場合の、エラーが返されるタイミングおよびカーソルの位置を指定します。 0(デフォルト値)に設定すると、RAISERROR は前後の文から独立して処理されます。RAISERROR が SQLExecute、SQLExecDirect、または SQLMoreResults で処理されると、エラーを返します。結果セットは空です。 1(Microsoft互換)を設定すると、RAISERROR は次の文で処理されます。次の文が処理されるときにエラーを返し、カーソルは後に続く結果セットの 1 行目に置かれます。この場合は、1 回の実行で複数の RAISERROR が返る可能性があります。 |
|
SecurityService |
このデータソースへの接続時に、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。 |
以下の表は、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 |
サポートされる分離レベルは、レベル 0 サーバのバージョンが 11 以上の場合、レベル 1(コミット後に読み出し、デフォルト値)およびレベル 3(直列化可能)です。また、ページレベルのロックをサポートしています。分離とロックの詳細については、『Connect ODBC リファレンス』の『付録 D ロックレベルと分離レベル 』 を参照してください。
Sybase ドライバがサポートしている関数については、『Connect ODBC リファレンス』の『付録 C ODBC API 関数とスカラ関数』に説明されています。また、次の関数もサポートされています。
また、基本 SQL 文法をサポートしています。
Sybase ドライバでは、複数接続および、各接続ごとの複数の文の実行をサポートしています。また、SelectMethod 属性が 1 に設定されている場合は、Sybase データソースでは、手動コミットモードでアクティブとなる文が 1 つのみとなります。
テキストドライバは、ASCII テキストファイルをサポートしています。これらのファイルには、バイナリ形式で保存されているデータが含まれないため、テキストエディタやワードプロセッサで直接、印刷および編集することができます。
テキストドライバのファイル名については、Micro Focus DataDirect 製品に付属の README ファイルを参照してください。
テキストドライバは、テキストファイルに対して直接 SQL 文を実行します。INSERT 文もサポートされており、ファイルの末尾にレコードが追加されます。また、状況によっては、UPDATE 文および DELETE 文も実行可能です。
表 16-1.は、一般的なテキストファイルフォーマットの一覧です。
|
フォーマット |
内容 |
|---|---|
|
Comma-separated values(コマンド分割) |
各列の値をコンマで区切ったファイルで、各行がそれぞれ別々のレコードに該当します。列の値の長さは可変です。このフォーマットのファイルには、通常、拡張子として .CSV が用いられます。 |
|
Tab-separated values(タブ分割) |
各列の値をタブで区切ったファイルで、各行がそれぞれ別々のレコードに該当します。列の値の長さは可変です。 |
|
Character-separated values(文字分割) |
各列の値をプリント可能な文字(ただし、一重引用符と二重引用符は除く)で区切ったファイルで、各行がそれぞれ別々のレコードに該当します。列の値の長さは可変です。 |
|
Fixed(固定長) |
区切り文字がなく、各列の値が各行ですべて同じ位置で始まるファイルです。また、行の長さは全部同じです。ファイルを表示すると、各列の値がすべて縦に揃って見えます。この場合も 1 行が 1 レコードです。 |
|
Stream(ストリーム) |
列の区切り文字がなく、また、レコードの区切りもないファイルです。つまり、表は、1 本の長いバイトストリーム(バイトの連なり)として表現されます。 |
これらのフォーマットのうち、コンマ分割、タブ分割、および文字分割のテキストファイルは、まとめて文字区切りファイルと総称されます。これは、いずれも何らかの文字で値が区切られているためです。
すべてのテキストファイルが同じ構造(フォーマット)を持っているわけではありません。このため、テキストドライバでは、既存のファイルの構造を定義するオプションが提供されています。ここで説明する表構造の定義は、必ず行わなければならないわけではありません(テキストドライバは、列の名前とデータ型の推測機能を使用して推測することができます)が、定義が非常に役に立つ場合もあります。
UNIX の場合は、テキストファイルの構造の定義は、QETXT.INI ファイルを作成して行います。QETXT.INI ファイルは、vi などの通常のテキストエディタで作成します。QETXT.INI ファイルの名前はすべて大文字でなければなりません。定義する表はすべて、このファイルにより指定されます。このファイルでテキストファイルを定義すると、システム情報ファイルおよび接続文字列で指定されている属性に優先して使用されます。
QETXT.INI ファイルによるテキストファイルの構造の定義は、次のようにして行います。
emptxt.txt=EMP
表名は 32 字以内でなければなりません。また、同一のデータベース内の他の表と同じ名前を記述することはできません。この名前が、SQLTables により返されます。デフォルトでは、拡張子を除いた名前が返されます。
たとえば、テキストファイルの名前は、次のようにして指定します。
FILE=emptxt.txt
表の種類を指定するには、各フィールドの区切り文字、Comma(コンマ区切り)、Tab(タブ区切り)、Character(文字区切り)、Fixed(固定長)、または Stream(ストリーム)を記述します。たとえば、次のように記述します。
TT=COMMA
表の種類が Character(任意の文字)の場合は、実際の区切り文字を指定しなければなりません。たとえば、区切り文字がセミコロンの場合は、次のように記述します。
DC=;
さらに、最初の行に列名があるかどうかを 1(列名がある)または 0(列名がない)で示します。たとえば、次のようになります。
FLN=0
各要素の値は、コンマで区切ります。以下は、フィールドが 2 つの場合の記述例です。
FIELD1=EMP_ID,VARCHAR,6,0,6,0,
FIELD2=HIRE_DATE,DATE,10,0,10,0,m/d/yy
以下は、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,
日付マスクを使用して、日付がテキストファイルに格納される場合の書式を指定することができます。値は、テキストファイルに挿入される際に、この日付マスクに従ってフォーマットされ、格納されます。また、テキストファイルから値が読み出されるときには、フォーマット済みの日付から通常の日付データへと変換されます。
以下の表は、日付マスクの指定に使用可能な記号と、その意味の一覧です。
|
記号 |
内容 |
|---|---|
|
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 |
データソースを設定するには、下記の表に示されているデータソース定義を使用する必要があります。 システム情報ファイルの設定に関する詳細については、『UNIX 環境』を参照してください。
アプリケーションから接続文字列を使ってデータソースに接続する場合は、データソース名を指定する必要があります。データソースの指定により、システム情報中でドライバにより使われるセクションが決定され、そこに記述されているデフォルトの接続情報がドライバによって読み取られます。また、システム情報ファイル中に記録されているデフォルトの接続情報は、接続文字列で属性と値を対で指定して、上書きすることができます。ただし、接続文字列で指定した情報は、システム情報に優先して使用されるだけで、実際にシステム情報ファイルに書き込まれることはありません。
接続文字列では、属性をフルネームまたは略号で入力します。接続文字列の書式は、次のとおりです。
DSN=data_source_name[;attribute=value[;attribute=value]...]
ここで、data_source_name はデータソース名、attribute は属性、value は属性の値です。また、DSN は、属性、DataSourceName の略号です。テキストファイルの場合の接続文字列は、次の例のようになります。
DSN=TEXT FILES;TT=CHARACTER;DC=&
以下の表は、各種属性のフルネームと略号(かっこ内)、および属性の内容の一覧です。システム情報ファイルでは、属性のフルネームのみが使用されます。
この表にあるデフォルト値は、接続文字列やシステム情報ファイルのデータソース定義に値が指定されていない場合に使用される初期値です。データソースの設定時に属性の値を指定した場合は、その値がデフォルト値となります。
|
属性 |
説明 |
|---|---|
|
AllowUpdateAnd |
AllowUpdateAndDelete={0 | 1}。このデータソースで UPDATE 文と DELETE 文を使えるようにするかどうかを設定します。デフォルトは 0 です。UPDATE と DELETE 文は、表の内容をただちに変更するため、一度に表を操作できるのは、1 つの接続のみとなっています。1 を設定すると、その時点の接続以外では表を開くことができなくなります。テキストファイルの更新、削除によりそのファイルに重大な変更が行われ、パフォーマンスも低下します。パフォーマンスが重要な要因である場合は、他の適切なデータベースの使用をお奨めします。 |
|
ApplicationUsing |
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 文を使って表を新たに作成する場合にも有効となります。
以下の表は、テキストファイルのデータ型と標準 ODBC データ型との対応関係を示したものです。
|
テキストデータ型 |
ODBC データ型 |
|---|---|
|
Numeric |
SQL_NUMERIC |
|
Date |
SQL_TYPE_DATE |
|
Varchar |
SQL_VARCHAR |
テキストドライバでは、SQL 文を使って列の指定とレコードの取り出しが可能です。ドライバでは、『Connect ODBC リファレンス』の『付録 A フラットファイルドライバと SQL 文』で説明されているようにすべての SELECT 文節がサポートされています。
テキストドライバは、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 文で削除を行うとエラーが発生します。
Text ドライバがサポートしている関数については、『Connect ODBC リファレンス』の『付録 C ODBC API 関数とスカラ関数』に説明されています。また、SQLSetPos 関数もサポートされています。
さらに、SQLExtendedFetch および SQLFetchScroll でのバックワードフェッチとランダムフェッチがサポートされており、基本 SQL 文法がサポートされています。
テキストドライバは、複数接続および、各接続ごとの複数文の実行をサポートしています。
Copyright © 2002 Micro Focus International Limited. All rights reserved.
本書ならびに使用されている固有の商標と商品名
は国際法で保護されています。
![]() | COBSQL エラーメッセージ | 埋め込み SQL 文 | ![]() |