Contents
目次

[F1] キーを押すと、ヘルプが表示されます。

以下の項目が参照できます。

DEC ODBC DRIVER for MS Windows および Windows NT オペレーティング・システム

V2.0 での新機能

DEC ODBC DRIVER のインストレーション

インストレーションの準備

必要なソフトウェア

必要な時間

必要なディスク領域

ソフトウェアのインストレーション

データ・ソースの構成

インストレーションにより作成されるファイル

DEC ODBC DRIVER の概要

ODBC の概要

システムの一部としての ODBC ドライバ

標準への準拠

データ・ソースの設定

接続時間の短縮

DEC ODBC.INI または WIN.INI ファイルの修正

クライアントとドライバのログ

SQL/Services クライアント・ログを有効にする

ODBC ドライバ・ログを有効にする

ロック・タイムアウトの短縮

先行フェッチ機能を有効にする

SQL 文から制御文字の削除

ネットワーク・バッファ・サイズの増加

よく起こる問題

ODBC ドライバを初めて使用するとき

データベースへアタッチするとき

エラー・メッセージ

プログラミング上の注意

接続文字列のフォーマット

プログラムの中での SQL/Services クライアント・ログを有効にする

プログラムの中でのロック・タイムアウトの短縮

ODBC.LIB とのリンク

DEC Rdb リストの使用

dbkey の使用

db キーに関する情報の獲得

db キーを返す INSERT 文

WHERE 句の中の db キー

並列性と性能の向上

SQLColumns 関数

サポートされる機能

API 準拠

SQL 文法の拡張

ODBC ドライバの機能

SQL 識別子

名前とバージョン番号

スカラ関数

トランザクション・サポート

SQL データ型から ODBC データ型へのマッピング

ODBC データ型から SQL データ型へのマッピング

DEC Rdb リスト (Blob) への透過的アクセス

SQL/SERVICES ERRORS

-2000,SQLSRV_INVARG

-2001,SQLSRV_INVBUFSIZ

-2002,SQLSRV_ASCACT

-2003,SQLSRV_NETERR

-2004,SQLSRV_SRVERR

-2005,SQLSRV_INVASC

-2006,SQLSRV_INVSQLDA

-2007,SQLSRV_PRSERR

-2008,SQLSRV_INVSTMID

-2009,SQLSRV_INVCURNAM

-2010,SQLSRV_ASCNOTACT

-2011,SQLSRV_INTERR

-2012,SQLSRV_OPNLOGFIL

-2013,SQLSRV_NO_MEM

-2014,SQLSRV_INVSQLCA

-2015,SQLSRV_SQLDA_NOTALL

-2016,SQLSRV_MULTI_ACT

-2018,SQLSRV_INVIDX

-2019,SQLSRV_INVEXEFLG

-2020,SQLSRV_FTRSYNERR

-2021,SQLSRV_INVASCSTR

-2022,SQLSRV_INVENVTAG

-2023,SQLSRV_INVENVVAR

-2024,SQLSRV_INVREPCNT

-2025,SQLSRV_DUPCRSNAM

-2026,SQLSRV_INVCOLNUM

-2027,SQLSRV_INVDATTYP

-2028,SQLSRV_INCDATTYP

-2029,SQLSRV_USRDATALL

-2030,SQLSRV_ACTSTM

-2031,SQLSRV_APINOTSUP

-2032,SQLSRV_INV_CLS

-2033,SQLSRV_NO_PRCAVL

-2034,SQLSRV_GETACCINF

-2035,SQLSRV_EXEINTERR

-2036,SQLSRV_HOSTERR

-2037,SQLSRV_XPT_MISSING

-2042,SQLSRV_SRVNOTSUP

-2043,SQLSRV_INVSETLEN

-2044,SQLSRV_INVSQLLEN

-2045,SQLSRV_DLL_LOAD_ERR

-2046,SQLSRV_DLL_ADDR_ERR

サンプル・ファイル

ODBC オプション用のインクルード・ファイル

リスト・カーソルを使用してリストとしてデータを格納するファイル

リスト・カーソルを使用してリストを検索するファイル


DEC ODBC Driver for MS Windows
DEC ODBC DRIVER for MS Windows および Windows NT オペレーティング・システム

ODBC ドライバを使用すると、MS Windows および Windows NT 上の ODBC アプリケーションから TCP/IP または DECnet を使用して DEC Rdb データベースへの読み書き可能アクセスを行えます。 さらに DEC DB Integrator Gateway for DB2, DEC DB Integrator Gateway for ORACLE, および DEC DB Integrator Gateway for RMS を通じてデータを読み込んだり書き込んだりすることもできます。ODBC ドライバは、データにアクセスするために SQL/Services ソフトウェアを使用します。


V2.0 での新機能

V2.0 での新機能について説明します。

A. Microsoft ODBC V2.0 のサポート

Miscosoft ODBC V2.0 のサポートが追加されました。

B. ODBC スカラ関数のサポート

以下の ODBC スカラ関数がサポートされるようになりました。

o	CONCAT, IFNULL, LCASE, LEFT, LTRIM, LENGTH, SPACE,

SUBSTRING, UCASE, ABS, LOCATE,  PI, RIGHT, RTRIM,

SIGN, DATABASE

o	CURDATE, CURTIME, NOW, HOUR, MINUTE, MONTH, SECOND, YEAR

o	DAYOFMONTH, DAYOFWEEK, DAYOFYEAR

C. 自動コミット処理の強化

自動コミット処理の強化により、ネットワークの負荷が減り、自動コミット・モードで実行するアプリケーションの処理速度が速くなりました。 この機能を使用するためには、 SQL/Services V6.1 を使用します。

D. カタログ機能の強化

カタログ機能の強化により、カタログを使用する問合せの処理速度が速くなりました。この機能を使用するためには、 SQL/Services V6.1 および DEC SQL V6.1 を使用します。

E. SQL DATE ANSI データ型のサポート

SQL DATE ANSI データ型のサポートにより、以下の日時データ型がサポートされるようになりました。

o	DATE ANSI

o	TIME

o	TIMESTAMP

o	INTERVAL

この機能を使用するためには、SQL/Services V6.1 を使用します。

スケールが 2 （秒精度がレベル 2)の TIMESTAMP データ型のみサポートされます。

スケールが O （秒精度がレベル 0)の TIME データ型のみサポートされます。

F. SQLColumns 関数のサポート

SQLColumns 関数は、『Microsoft ODBC Programmer's Reference manual』 での記述よりも 1 列多い結果を返します。 列を更新したかどうかは、13 番目の列によりわかります。 詳細は、「SQLColumns 関数」の説明を参照してください。


DEC ODBC DRIVER のインストレーション

ここでは、ODBC ドライバのインストレーションについて説明します。

ODBC ドライバのディスケットには、README.TXT というファイルがあります。 このファイルにはインストレーションについての詳細が記述されていますので、インストレーションを行う前に必ずお読みください。


インストレーションの準備

ここでは ODBC ドライバのインストレーションに必要なソフトウェア、時間、およびディスク領域について説明します。


必要なソフトウェア

ODBC ドライバをインストールして使用するには、以下のソフトウェアをパーソナル・コンピュータにインストールしておかなければなりません。

--	Microsoft Windows NT オペレーティング・システム V3.1 以降

--	Microsoft Windows オペレーティング・システム V3.0 以降

--	DECnet を使用している場合、PATHWORKS for DOS V4.1

--	TCP/IP を使用している場合、PATHWORKS for DOS (TCP/IP)

--	IPX/SPX を使用している場合、Novell NetWare V3.x

Microsoft ドライバ・マネージャをパーソナル・コンピュータにインストールしておく必要はありません。このソフトウェアは、ODBC ドライバといっしょに自動的にインストールされます。 ODBC Administrator （ODBC セットアップの英語版) を自動的にインストールするためのオプションもあります。

ODBC ドライバを使用するためには、次のソフトウェアをサーバにあらかじめインストールしておかなければなりません。

--	VMS V5.3 以降

--	DEC Rdb V4.1 以降

--	DECnet

--	TCP/IP を使用している場合、 DEC TCP/IP Services for OpenVMS V2.0 (従来の VMS/ULTRIX Connection Software または UCX)

--	IPX/SPX を使用している場合、NetWare ファイル共有サービス (FSS)の接続。これを使用すると IPX/SPX を使用して NetWare ファイル・サーバに接続できます。


必要な時間

ODBC ドライバのインストレーションには、約 5 分かかります。ただし、ハードウェア構成によって多少異なります。


必要なディスク領域

インストレーションには、約 600 kB のディスク領域が必要です。必要な領域は、すでにインストールされているファイルによって異なります。 インストレーション・プロシージャは、ディスクの空き領域が十分あるかどうかチェックします。 領域が足りない場合、インストレーションは失敗します。

インストレーション後、約 500 kB のディスク領域が解放されます。


ソフトウェアのインストレーション

ここでは、すでに MS Windows または Windows NT が起動していると仮定します。 DEC ODBC ドライバ V2.0 のインストレーションは、以下の手順で行います。

1.	ディスケットをドライブに挿入します。

2.	プログラム・マネージャのアイコン（F) メニューから、ファイル名を指定して実行（R) を選択してください。ファイル名を指定して実行ダイアログ・ボックスが表示されます。

3.	ファイル名を指定して実行ダイアログ・ボックスにドライブ名と SETUP コマンドを入力してください。 ドライブ A を使用する場合は、次のように入力します。

Command Line: A:\SETUP

OK をクリックします。セットアップが初期化される間に ODBC Driver Setup ダイアログ・ボックスが表示されます。 初期化が終わると、Welcome ボックスが表示されます。

4.	インストレーションを続けるには、Continue をクリックしてください。インストレーションを終了するには、Exit をクリックしてください。

Continue をクリックすると、ODBC Administrator プログラムをインストールするかどうかを尋ねられます。

5.	ODBC Administrator をインストールするには、Install をクリックしてから、Continue をクリックしてください。トランスポートを選択するボックスが表示されます。

6.	TCP/IP または DECnet を省略時の設定のネットワーク・トランスポートとして選択し、Continue をクリックします。

7.	インストレーションが終了すると、以下のメッセージが表示されます。

Setup Complete. The ODBC Driver has been successfully installed.


データ・ソースの構成

インストールした ODBC ドライバを使用する前に、データ・ソースを設定しなければなりません。詳細は、「データ・ソースの設定」の説明を参照してください。


インストレーションによって作成されるファイル

16 ビット DEC ODBC Driver キット

16 ビット DEC ODBC Driver キットにより、以下のファイルが作成されます。

DEC ODBC driver ファイル

--	SQSAPIW.DLL -- Windows 版 SQL/Services ダイナミック・リンク・ライブラリ (DLL)

--	SQRDBSP.DLL -- ODBC ドライバ・セットアップ・ダイナミック・リンク・ライブラリ (DLL)

--	SQRDB.DLL -- ODBC ドライバ・ダイナミック・リンク・ライブラリ (DLL)

--	SQSAPIW.INI -- SQL/Services 初期化ファイル

--	SQRDB.TXT -- ODBC ドライバ・リリース・ノート

--	SQRDBNET.TXT -- ODBC ドライバ・ネットワーク情報

-	SQRDB.HLP -- ODBC driver MS Windows and Windows NT ヘルプ・ファイル

-	DECKANJI.DLL -- 文字集合変換ダイナミック・リンク・ライブラリ

Microsoft ドライバ・マネージャ および ODBC Administrator ファイル

--	ODBCINST.DLL -- Microsoft ODBC インストーラ・ダイナミック・リンク・ライブラリ (DLL)

--	ODBC.DLL -- Microsoft ODBC ダイナミック・リンク・ライブラリ (DLL) (ドライバ・マネージャ)

--	ODBCCURS.DLL -- Microsoft ODBC カーソル DLL

--	ODBCADM.EXE -- Microsoft ODBC Administrator 実行可能イメージ

--	ODBCINST.INI -- Microsoft ODBC インストーラ INI ファイル

--	ODBC.INI -- Microsoft ODBC Administrator INI ファイル

--	ODBCINST.HLP -- Microsoft ODBC インストーラ・ヘルプ・ファイル

--	ODBC32.DLL -- 32 ビット・サンク・ドライバ・マネージャ

--	ODBC16UT.DLL -- 16 ビット ODBC 汎用サンク DLL

--	ODBCCP32.DLL -- 32 ビット・サンク・インストーラ DLL

--	CPN16UT.DLL -- 16 ビット・インストーラ汎用 サンク DLL

--	CTL3DV2.DLL -- 16 ビット 3 次元 window 形式ライブラリ

Novell NetWare ファイル

--	NWIPXSPX.DLL -- NetWare C Interface SDK の Novell ダイナミック・リンク・ライブラリ（DLL)

--	NWNETAPI.DLL -- NetWare C Interface SDK の Novell ダイナミック・リンク・ライブラリ（DLL)

32 ビット DEC ODBC Driver キット

32 ビット DEC ODBC Driver キットにより、以下のファイルが作成されます。

DEC ODBC driver ファイル

--	SQSAPI32.DLL -- Windows NT 版 SQL/Services ダイナミック・リンク・ライブラリ (DLL)

--	DECODBSP.DLL -- ODBC ドライバ・セットアップ・ダイナミック・リンク・ライブラリ (DLL)

--	DECODBDR.DLL -- ODBC ドライバ・ダイナミック・リンク・ライブラリ (DLL)

--	SQSAPI32.INI -- SQL/Services 初期化ファイル

--	DECODBC.INI -- DEC ODBC Driver 初期化ファイル

--	SQRDB.TXT -- ODBC ドライバ・リリース・ノート

--	SQRDBNET.TXT -- ODBC ドライバ・ネットワーク情報

-	SQRDB.HLP -- ODBC driver MS Windows and Windows NT ヘルプ・ファイル

-	DECKAN32.DLL -- 文字集合変換ダイナミック・リンク・ライブラリ

Microsoft ドライバ・マネージャ および ODBC Administrator ファイル

--	ODBCCP32.DLL -- Microsoft ODBC インストーラ・ダイナミック・リンク・ライブラリ (DLL)

--	ODBC32.DLL -- Microsoft ODBC ダイナミック・リンク・ライブラリ (DLL) (ドライバ・マネージャ)

--	ODBCCR32.DLL -- Microsoft ODBC カーソル DLL

--	ODBCAD32.EXE -- Microsoft ODBC Administrator 実行可能イメージ

--	ODBCINST.DLL -- Microsoft ODBC インストーラ・ダイナミック・リンク・ライブラリ (DLL)

--	ODBC.DLL -- Microsoft ODBC ダイナミック・リンク・ライブラリ (DLL) (ドライバ・マネージャ)

--	ODBCINST.HLP -- Microsoft ODBC インストーラ・ヘルプ・ファイル

--	ODBC16GT.DLL -- 16 ビット ODBC 汎用サンク DLL

--	ODBC32GT.DLL -- 32 ビット ODBC 汎用サンク DLL

--	DS16GT.DLL -- 16 ビット・ドライバ汎用サンク DLL

--	DS32GT.DLL -- 32 ビット・ドライバ汎用サンク DLL

--	CTL3D32.DLL -- 32 ビット 3 次元 windows 形式ライブラリ


DEC ODBC DRIVER の概要

ODBC ドライバを使用すると、MS Windows および Windows NT 上の ODBC アプリケーションから TCP/IP または DECnet を使用して、DEC Rdb データベースへの読み書き可能アクセスが行えます。 さらに、DEC DB Integrator Gateway for DB2, DEC DB Integrator Gateway for ORACLE, および DEC DB Integrator Gateway for RMS を通じてデータを読み込んだり書き込んだりすることができます。ODBC ドライバは、データにアクセスするために SQL/Services ソフトウェアを使用しています。

ここでは ODBC モデルと ODBC ドライバの概要を説明し、アプリケーション開発者とアプリケーション・ユーザに役立つ情報を提供します。


ODBC の概要

Open Database Connectivity (ODBC) は、1 つのアプリケーションから複数の異なるデータ・ソースにアクセスするための標準インターフェイスを提供します。 アプリケーションのソース・コードをデータ・ソース別にコンパイルし直す必要はありません。 データベース・ドライバが、アプリケーションを個々のデータ・ソースとリンクします。 データベース・ドライバは、アプリケーションが特定のデータ・ソースへアクセスできるよう要求に応じて起動できるダイナミック・リンク・ライブラリです。 これによってアプリケーションは、データベース・ドライバが存在するすべてのデータ・ソースにアクセスできます。

ODBC インターフェイスは、以下を定義します。

--	アプリケーションがデータ・ソースに接続したり、SQL 文を実行したり、結果を検索するための ODBC 関数のライブラリ

--	X/Open および SQL Access Group (SAG) SQL CASE 仕様 (1992) に基づく SQL 構文

--	エラー・コードの標準セット

--	データ・ソースに接続し、ログインするための標準手段

--	データ型の標準表現

ODBC モデルを次の図に示します。モデルの構成要素について、図の後で説明します。

ODBC モデル

ODBC アプリケーションは、SQL 文を実行して結果を検索するために ODBC 関数を呼び出します。 アプリケーションは、複数のデータベース・ドライバ（ODBC ドライバ) にアクセスすることによって、それぞれ別々のデータ・ソースにアクセスすることができます。

Microsoft のドライバ・マネージャは、アプリケーションが ODBC SQLConnect または ODBC SQLDriverConnect 関数を呼び出したときに、そのアプリケーションにかわってODBC ドライバをロードします。

ODBC ドライバは、アプリケーションがデータにアクセスできるよう必要な時に起動できるダイナミック・リンク・ライブラリです。 このドライバは、ODBC 関数呼び出しを処理し、SQL 文を特定のデータ・ソースに渡し、その結果をアプリケーションに返します。ドライバは、必要に応じてアプリケーションの要求を関連するデータ・ソースがサポートする構文に従うように変更します。 アプリケーションからは、ドライバ・マネージャとドライバは ODBC 関数呼び出しを処理する 1 つの単位として見えます。

データ・ソースは、ユーザがアクセスしたいデータ、関連するオペレーテョング・システム、データベース管理システム、データベース管理システムをアクセスするためのネットワーク・トランスポートから構成されます。


システムの一部としての ODBC ドライバ

DEC ODBC Driver は、DEC 版の ODBC ドライバです。 ドライバと他の構成要素との関係を次に示します。

ODBC ドライバは、データ・ソースに要求を渡したり、データ・ソースから要求を受け取るために、SQL/Services クライアント・ソフトウェアとサーバ・ソフトウェアを使用します。 SQL/Services クライアントと SQL/Services サーバの間の通信には、PATHWORKS に加えて DECnet 通信プロトコルまたは TCP/IP (Transmission Control Protocol/Internet Protocol) 通信プロトコルが使用できます。

SQL 文は、動的 SQL インターフェイスを通じてデータ・ソースである DEC Rdb に渡されます。また、DEC DB Integrator Gateway for DB2, DEC DB Integrator Gateway for ORACLE, および DEC DB Integrator Gateway for RMS を通じて、DB2 データベース、ORACLE データベース、RMS ファイルへ SQL 文を渡すこともできます。

ODBC ドライバは、ODBC SQL 構文を、データ・ソースをアクセスするのに使用できる構文に変換します。 データ・ソースから結果が返されると、ドライバはそれらをもとの ODBC SQL 構文に変換します。

SQL/Services クライアント・ソフトウェアとサーバ・ソフトウェアについての詳細は、 SQL/Services のドキュメントを参照してください。


標準への準拠

ODBC は、ドライバに関する準拠レベルを ODBC アプリケーション・プログラミング・インターフェイス （API) とODBC SQL 文法の 2 つの領域で定義しています。

ODBC ドライバは、レベル 1 API 機能をサポートしています。これには、コア関数とその拡張関数が入っています。コア関数は、X/Open および SQL Access Group Call Level Interface 仕様にある関数に対応しています。

ODBC ドライバは、コアSQL 文法機能をサポートしています。これは、X/Open および SQL Access Group SQL CAE 仕様 (1992) に対応しています。

コア SQL 文法には、以下が含まれます。

--	データ定義言語 (DDL): ALTER TABLE, CREATE INDEX, CREATE TABLE, CREATE VIEW, DROP INDEX, DROP TABLE, DROP VIEW, GRANT, REVOKE の各文

--	データ操作言語 (DML): 位置付け DELETE, DELETE SEARCHED, INSERT, フル SELECT, シンプル SELECT, 位置付け UPDATE, および UPDATE SEARCHED の各文

--	式: 集合関数 (SUM や MIN など), 単純式 ( A > B + C など), および副問合せ

--	データ型: CHAR, DECIMAL, DOUBLE PRECISION, FLOAT, INTEGER, NUMERIC, REAL, SMALLINT, VARCHAR

ODBC ドライバは、 BIGINT, DATE, LONGVARCHAR, TINYINT の各拡張 SQL 文法のデータ型もサポートしています。

NOTE:REAL および TINYINT データ型が使用できるのは、DEC Rdb V5.1 以降を使用している場合だけです。

サポートされている関数についての詳細は、「サポートされている関数」の説明を参照してください。


データ・ソースの指定
データ・ソースの設定

アプリケーションがデータ・ソースと通信できるようにするには、構成情報を設定しなければなりません。 ODBC ドライバは、この構成情報を読み込んでデータ・ソースにアクセスします。

データ・ソースは、アクセスしたいデータとそのオペレーティング・システム、データベース管理システム、データベース管理システムをアクセスするのに使用するネットワーク・プラットフォームから構成されます。 ODBC ドライバによって渡される要求に関するデータ・ソースは、DEC Rdb データベースで、DECnet または TCP/IPを通じてアクセスされます。 DEC DB Integrator Gateway for DB2, DEC DB Integrator Gateway for ORACLE, または DEC DB Integrator Gateway for RMS データベースを、データ・ソースとして使用することもできます。

ODBC ドライバをインストールしたら、ODBC Administrator を起動します。このプログラムは、データ・ソースの設定を行うために ODBC ドライバといっしょにインストールされます。以下の手順に従ってください。

1.	ODBC Administrator アイコンをダブルクリックしてください。インストールされているドライバの一覧が表示されます。

2.	インストールされているドライバのリストにある DEC ODBC Driver をクリックしてください。

3.	次に Add New Name をクリックしてください。 ODBC Driver Setup ダイアログ・ボックスが表示されます。 Data Source Name を入力します。ダイアログ・ボックスで要求される他の情報は、ここで入力することができます。またフィールドを空白にしておき、アプリケーションを実行するときに入力しても構いません。

o	Data Source Name は、ODBC に対してデータ・ソースを指定するのに使用する名前です。

o	Description には、データ・ソースに関するコメントを書き込めます。

o	Server は、データをアクセスするための SQL/Services が動作している OpenVMS ノード名、または DEC OSF/1 AXP ホスト名です。

o	Class は、SQL/Services サーバの実行クラスを指定する SQL/Services クラス名です。 省略時の設定は GENERIC です。 クラス名についての詳細は、 SQL/Services のドキュメントを参照してください。

o	UserID は、データをアクセスするのに使用するアカウントの OpenVMS ユーザ名です。

o	Attach statement は、データベースをアクセスするのに使用する SQL ATTACH 文です。

NOTE: 「接続時間の短縮」で説明しているように、すでにアタッチされている実行サーバを使用する場合、SQL/Services 設定ファイルで ATTACH 文を指定しているときは、ATTACH 文を指定しないでください。

--	DEC Rdb でマルチスキーマ命名を許可している場合、ATTACH 文を MULTISCHEMA IS OFF 構文といっしょに使用しなければなりません。

ATTACH 'FILENAME DISK$1:[GERALDO.DB]SUPPLIES MULTISCHEMA IS OFF'

o	Transport は、データベースへアクセスするために使用するネットワーク・トランスポートです。 ODBC ドライバをインストールする時に省略時の設定のトランスポートに指定したトランスポートが表示されます。他の使用可能なネットワーク・トランスポート名を表示させるには、下矢印をクリックします。

o	DBI Options -- DBI または DBI ゲートウェイ製品が関連するオプションをサポートする場合、以下の 1 つまたは複数の値を指定します。 複数のオプションを指定する場合は、それらのオプションの値の合計を入力します。

値	説明

      0 -- 	以下のすべてのオプションを指定しないことを示します

      1 -- 	相関名がサポートされていません

      2 -- 	GROUP BY 句がサポートされていません

      4 -- 	集合和がサポートされています

      8 -- 	入れ子の場合を除き、OUTER JOIN がサポートされています

    16 -- 	入れ子の OUTER JOIN がサポートされています

    32 -- 	スカラ関数がサポートされています

    64 -- 	副問合せがサポートされていません

  128 -- 	ORDER BY 句の中の式がサポートされています

  256 -- 	トランザクション・アイソレーション・レベルがサポートされています

  512 -- 	INTERVAL データ型に対して Read Only の列属性を返します

1024 -- 	ストアド・プロシージャがサポートされています

2048 -- 	CREATE TABLE 文で NOT NULL 制約がサポートされていません

4096 -- 	日時データ型を文字データ型として表します

o	Read Only -- 読み込み専用アクセスをする場合、チェックします。

o	Auxiliary Password -- データ・ソースに接続する時に、補助のパスワードを入力したい場合、チェックします。RdbAccess を使用している場合は、IBM または ORACLE のパスワードになります。

NOTE: RdbAccess for DB2 V1.0 および RdbAccess for ORACLE V1.0 は読み込み専用の製品ですので、読み込み専用属性をチェックしてください。

o	Translation Option は、ODBC ドライバにより呼び出される時に変換ライブラリに渡す数値です。DEC ODBC Driver が提供している DECKANJI.DLL や DECKAN32.DLL を使用するには、通常 0 を代入してください。

o	Translation Library は、ODBC ドライバにより呼び出される、変換ライブラリ名を指定します。OpenVMS や OSF/1 上の DEC 漢字データをアクセスするためには、16 ビット ODBC Driver では DECKANJI.DLL を、32 ビット ODBC Driver では DECKAN32.DLL を指定してください。これらのダイナミック・リンク・ライブラリがデータの文字集合を DEC 漢字からシフト JIS へ、またはその逆の変換を自動的に行います。

4.	データを入力したら、OK をクリックするか Return キーを押します。


接続時間の短縮

ODBC アプリケーションが DEC Rdb データベースに接続する場合、 SQL/Services を実行する サーバ・プロセスが作成されます。このプロセスが DEC Rdb データベースにアタッチします。これには、普通数秒かかります。

すでに起動されている実行サーバを使用するような SQL/Services 実行クラスを定義すると、データベースへの接続にかかる時間を短縮できます。オプションとして、すでにアタッチされているデータベースにサーバを接続することもできます。

V41 という実行クラスの定義が入った SQL/Services 構成ファイルを以下に示します。 この実行クラスは、SQL/Services が起動したときに 2 つの SQL/Services 実行サーバが起動されるようにします。

SQL/Services 構成ファイル

-- ----------------------------------------------------------

--     D E F A U L T  S Q L / S E R V I C E S

--     C O N F I G U R A T I O N  F I L E

--      R D B / V M S  V E R S I O N 4.1

-- ----------------------------------------------------------

-- Default GENERIC Class Definition

-- ----------------------------------------------------------

TYPE "GENERIC"

STARTUP "SQLSRV$SRV"

MIN   0

MAX   10

IDLE  1800

-- ----------------------------------------------------------

-- V4.1 execution class that ensures that a minimum of

-- two execution servers are always running. Specifying

-- a value of -1 for the idle time causes the execution

-- server to remain up even when not in use.

-- ----------------------------------------------------------

TYPE "V41"

STARTUP "SQLSRV$SRV"

MIN   2

MAX   10

IDLE  -1

-- ----------------------------------------------------------

-- Sample DATABASE Class Definition

-- ----------------------------------------------------------

-- To have your client applications processed by a database

-- server, specify the USER, EXECUTE, and IDENT keywords. For

-- the USER keyword, specify a valid user account name. For

-- the EXECUTE keyword, specify a valid SQL statement to

-- invoke the database. For the IDENT keyword, specify a

-- valid rights identifier.

--

-- This execution class ensures that at least one SQL/Services

-- execution class server is always up and attached to the

-- PERSONNEL database.

-- ----------------------------------------------------------

TYPE "PERSONNEL"

STARTUP "SQLSRV$SRV"

USER  "SMITH"

EXECUTE "ATTACH 'FILENAME DISK1:[SMITH.RDB041]PERSONNEL'"

IDENT  "SQLSRV$USER"

MIN   1

MAX   10

IDLE  -1

-- ----------------------------------------------------------

このファイルには、PERSONNEL という実行クラスの定義も入っています。SQL/Services が起動されると、この定義にしたがってもう 1 つの SQL/Services サーバが作成され、PERSONNEL データベースに接続されます。

NOTE: 自動接続が起こる実行クラスを使用する場合、ODBC Administrator を使用してデータ・ソースを設定する時に、ATTACH文を入力しないでください。 ATTACH 文を入力すると、データベースへの接続が 2 つになり、性能の向上が望めません。

実行クラスについての詳細は、SQL/Services のドキュメントを参照してください。


DECODBC.INI または WIN.INI ファイルの修正

DECODBC.INI (32 ビット・ドライバ) または WIN.INI (16 ビット・ファイル) ファイルのエントリを修正することができます。

o	SQL/Services クライアント・ログを有効にし、アプリケーションでの問題を特定します。

o	ODBC ドライバ・ログを有効にし、アプリケーションでの問題を特定します。

o	ロック・タイムアウトの時間隔を短くする、またはロックが解除されるまで DEC Rdb が待つ時間を制限します。

o	先行フェッチ機能を有効にし、ホストからのデータの検索速度を速くします。

o	キャッレッジ・リターンなどの制御文字を含む SQL 文を発行する ODBC アプリケーションからの制御文字を削除します。

o	DEC Rdb V6.0 以降に接続する場合、ネットワーク・バッファ・サイズを 1300 バイトから 5000 バイトに増やします。

DECODBC.INI または WIN.INI ファイルの個々のエントリの変更方法についての詳細は、これ以降で説明します。


クライアントとドライバのログ

SQL/Services クライアント・ログおよび ODBC ドライバ・ログを有効にすると、アプリケーションに関する問題を認識することができます。 ログが有効になっている場合、ログ・ファイルはアプリケーション・プログラムの現在の作業ディレクトリに書き込まれます。ログ・ファイルは非常に大きくなったり、性能を低下させることがあるので注意してください。ログは必要な場合だけ有効にし、必要なくなったら無効にします。

ODBC ドライバ・インストレーション・プロシージャでは、Windows NT DECODBC.INI (32 ビット・ドライバ) ファイル または MS Windows WIN.INI (16 ビット・ドライバ ) ファイルに次のセクションを作成します。

[DEC ODBC Driver]

Transport=1=pathworks:decnet,2=pathworks:tcp/ip

Client Logging=0

Driver Logging=0

LockTimeOut=0

クライアント・ログとドライバ・ログの値 0 は、SQL/Services のクライアント・ログと ODBC ドライバのログが無効になっていることを示します。

ログを有効にするには、クライアント・ログやドライバ・ログに適切な値を指定します。クライアント・ログやドライバ・ログの値を使用すると、アプリケーションの実行中に起こった問題をデバッグするのに便利です。

「プログラムの中で SQL/Services クライアント・ログを有効にする」で示すように、プログラムの中でクライアント・ログを有効にすることもできます。


SQL/Services クライアント・ログを有効にする

クライアント・ログを有効にするためには、次の例に示すように、等号の後に有効な SQL/Services クライアント・ログ値を挿入します。

[DEC ODBC Driver]

Client Logging=3

有効な SQL/Services クライアント・ログ値を表 「クライアント・ログ値」に示します。複数のログを有効にするには、ログ値を追加します。 たとえば、接続ログ（値 1 )と API ルーチン・ログ（値 2 ) を有効にするためには、等号の後に 3 を挿入します。

クライアント・ログは、アプリケーション・プログラムの現在の作業ディレクトリに書き込まれます。 クライアント・ログが複数ある場合は、各ファイルに CLIENTxx.LOG という一意な名前がつきます。ただし、xx は 1 から 99 までの数値です。

クライアント・ログ値

値 	引数 	説明

0 	SQLSRV_LOG_DISABLED 	ログを無効にします

1 	SQLSRV_LOG_ASSOCIATION 	接続ログを有効にします

2 	SQLSRV_LOG_ROUTINE 	API ルーチン・ログを有効にします

3 	SQLSRV_LOG_ASSOCIATION	接続ログと API ルーチン・ログを有効にします

SQLSRV_LOG_ROUTINE

4 	SQLSRV_LOG_PROTOCOL 	メッセージ・プロトコル・ログを有効にします

5 	SQLSRV_LOG_ASSOCIATION	接続ログとメッセージ・プロトコル・ログを有効にします

SQLSRV_LOG_PROTOCOL

6 	SQLSRV_LOG_ROUTINE	API ルーチン・ログとメッセージ・プロトコル・ログを有効にします

SQLSRV_LOG_PROTOCOL

7 	SQLSRV_LOG_ASSOCIATION	接続ログ、API ルーチン・ログ、メッセージ・プロトコル・ログを有効にします

SQLSRV_LOG_ROUTINE

SQLSRV_LOG_PROTOCOL

クライアント・ログについての詳細は、SQL/Services のドキュメントを参照してください。


ODBC ドライバ・ログを有効にする

ODBC ドライバのログを有効にするには、次の例に示すように、等号の後に有効な ODBC ドライバ・ログ値を挿入します。

[DEC ODBC Driver]

Driver Logging=7

有効な ODBC ドライバ・ログを表 「ドライバ・ログ値」に示します。 複数のログを有効にするには、ログ値に 1 を加えた値を追加します。たとえば、ODBC エントリ・ポイント （値 2) と主関数 (値 4) のログを有効にするには、等号の後に値 7 (2 + 4 + 1) を挿入します。

ドライバ・ログは、アプリケーション・プログラムの現在の作業ディレクトリの ODBCRDB.LOG ファイルに書き込まれます。

ドライバ・ログ値

値 	値 + 1 	説明

0 	- 	ログを無効にします

2 	3 	ODBC エントリ・ポイントをログに記録します

4 	5 	主関数をログに記録します

6 	7 	ODBC エントリ・ポイントと主関数をログに記録します

8 	9 	ODBC ユーティリティ関数をログに記録します

10 	11 	ODBC エントリ・ポイントとユーティリティ関数をログに記録します

12 	13 	ODBC 主関数とユーティリティ関数をログに記録します

14 	15 	ODBC エントリ・ポイント、主関数、ユーティリティ関数をログに記録します

16 	17 	SQL 文とエラーのみログに記録します

ODBC 接続で起きた問題を解決するためには、ODBC ドライバ・ログ値に 17 を指定することをおすすめします。17 を指定すると、出力が少なく、サーバに渡した SQL 文とサーバから返されたエラーだけがログに記録されるからです。 17 を指定すると、アプリケーションに関する問題の約 90% がログに記録されます。


ロック・タイムアウトの短縮

DEC Rdb は、トランザクション間のロック競合が解除されるのをいつまでも待ちます。DEC Rdb がロック解除を待つ時間を制限するには、Windows NT DECODBC.INI （32 ビット・ドライバ) または MS Windows WIN.INI （16 ビット・ドライバ) のODBC ドライバのLockTimeout 項目を設定します。 LockTimeOut パラメータに入力する値は、DEC Rdb が必要なロックを設定できない場合にタイムアウトが起こるまでの秒数です。次の例では、DEC Rdb は60 秒後にタイムアウトになります。

[DEC ODBC Driver]

Transport=1=pathworks:decnet,2=pathworks:tcp/ip

Client Logging=0

Driver Logging=0

LockTimeOut=60


"Fetch Ahead" 機能を有効にする
先行フェッチ機能を有効にする

先行フェッチ機能を有効にするには、FetchAhead=YES に変更します。

そうするとホストからデータを検索する際、先行フェッチ機能が使用でき、処理が速くなります。同一の接続で複数の SQL 文を実行するアプリケーションでは、先行フェッチ機能を無効にしておかなければなりません。無効にしておかないと、以下のエラー・メッセージが表示されます。

Multiple SQL statements cannot be active when FetchAhead=YES

先行フェッチ機能を無効にするには、DECODBC.INI または WIN.INI ファイルのドライバ・セクションの項目 FetchAhead の値を YES から NO に変更します。


SQL 文から制御文字の削除

制御文字を削除するためには、 RemoveControlChars=NO に変更します。

ODBC アプリケーションには、改行コードのような制御文字を含む SQL 文を発行するものもあります。DEC Rdb の SQL インターフェイスでは、制御文字を含む SQL文を使用することはできません。 このようなアプリケーションを使用する場合は、DECODBC.INI または WIN.INI ファイルのドライバ・セクションの項目 RemoveControlChars の値を NO から YES に変更します。


ネットワーク・バッファ・サイズの増加

ネットワーク・バッファ・サイズを大きくするためには、NetworkBufferSize=1300 に変更します。

V6.0 以降の SQL/Services サーバにアクセスする場合、ネットワーク・バッファ・サイズは最高 5000 バイトまで大きくすることができます。 V6.0 のサーバに接続する場合は、DECODBC.INI ファイルまたは WIN.INI フファイルのドライバ・セクションのネットワーク・バッファ・サイズを 1300 バイトから 5000 バイトに変更します。


よく起こる問題

ここでは、ODBC ドライバの実行中によく起こる問題について説明します。


ODBC ドライバを初めて使用するとき

ODBC ドライバを初めて使用し、データベースまたは表にアタッチする場合、次の問題が起こることがあります。

o	MS Windows が失敗する

問題: データベースまたは表にアタッチしようとすると、MS Windows がハング、失敗、または終了して DOS に戻ったりリブートする。

原因: Windows Setup の中で PATHWORKS がネットワークとして定義されていません。

対処: Windows Setup の中で PATHWORKS をネットワークとして定義してください。

o	アタッチしようとしても失敗する

問題: データベースまたは表にアタッチしようとしても失敗し、次のメッセージが表示される。

[Microsoft][ODBC DLL]Driver's SQLAllocConnect failed.

[DEC][ODBC]Unsupported version of SQL/Services Client DLL.

原因: パーソナル・コンピュータ上に誤ったバージョンまたは複数のバージョンのSQSAPIW.DLL があります。

対処: パーソナル・コンピュータ上に SQSAPIW.DLL のバージョンが 1 つだけあり、それが WINDOWS ディレクトリにあることを確認してください。 必要なら、インストレーション・ディスケットから WINDOWS ディレクトリに SQSAPIW.DLL を直接コピーします。

o	アタッチしようとしても失敗し、ネイティブ・エラーが起こる

問題: データベースまたは表にアタッチしようとしても失敗し、ネイティブ・エラー・コード -2035 が表示される。

原因: これは SQL/Services のエラーで、通常は VAX システム上のサーバが失敗したときに起こります。このエラーは、一般に SQL/Services が正しくインストールされていない場合に表示されます。

対処: SYS$STARTUP:SQLSRV$.LOG と、省略時の設定の SQL/Services アカウントにあるログ・ファイルを調べ、問題がないか確認してください。


データベースへアタッチするとき

データベースまたは表にアタッチしようとしたときに、次の問題が起こることがあります。

o	無効なクラス名エラー

問題: アタッチしようとしても失敗し、次のエラーが表示される。

-2032

[DEC][ODBC][Rdb]%SQLSRV-F-NO_CLS, Invalid Class Name

原因: ODBC Administrator を使用してパーソナル・コンピュータ上でデータ・ソースを設定したときに、未定義の SQL/Services クラス名を指定しました。

対処: データ・ソースを再設定し、有効な SQL/Services クラス名を指定してください。

o	ネットワーク・エラー

問題: アタッチしようとしても失敗し、次のエラーが表示される。

-2003

[DEC][ODBC][Rdb]Network Error:Suberror code is nn

原因: これは一般に PATHWORKS のエラーで、nn は PATHWORKS エラー・コードを示します。

対処: ERRNO.H ファイル (DECnet) または SOCK_ERR.H ファイル (TCP/IP) の中で PATHWORKS エラーを調べてください。いくつかのよく起こるエラーを以下に示します。

--	SQL/Services が実行されていない場合、次のエラーが表示されます。

[DEC][ODBC][Rdb]Network Error:Suberror code is 3

--	ターゲットの DECnet がパーソナル・コンピュータ上で定義されていない場合、次のエラーが表示されます。

[DEC][ODBC][Rdb]Network Error:Suberror code is 49

--	SQL/Services が失敗したために PATHWORKS がタイムアウトした場合、次のエラーが表示されます。

[DEC][ODBC][Rdb]Network Error:Suberror code is 60


エラー・メッセージ

ODBC ドライバは、次のいずれかの形式のエラー・メッセージを返します。

[DEC][ODBC]Error message text here

[DEC][ODBC][Rdb]Error message text here

エラー・メッセージに [Rdb] 接頭辞がない場合 (1 番目の例)、ODBC ドライバのエラーです。エラーの内容はメッセージを読めばわかります。

エラー・メッセージに [Rdb] 接頭辞がある場合 (2 番目の例)、ODBC ドライバのエラーではありません。 エラー・メッセージに [Rdb] 接頭辞があっても、実際のエラーは次のいずれかの原因の場合があります。

--	エラー・メッセージのテキストが次の接頭辞で始まっている場合、DEC Rdb がインストールされているシステム上の SYS$HELP:RDB_MSG.DOC ファイルにエラーに関する詳しい情報が入っています。

%RDB-

--	エラー・メッセージのテキストが次の接頭辞で始まっている場合、SQL がインストールされているシステム上の SYS$HELP:SQL$MSG.DOC ファイルにエラーに関する詳しい情報が入っています。

%SQL-

--	エラー・メッセージのテキストに次のテキスト（xx は数値)が含まれる場合、DECnet を使用しているときは、 ERRNO.H という PATHWORKS クライアント・ファイルからエラーを探してください。

Network Error: Suberror code is xx

TCP/IP を使用しているときは、 SOCK_ERR.H ファイルからエラーを探してください。

--	エラー・メッセージに次のテキストが含まれる場合、エラーについての詳細は OpenVMS のドキュメントを参照してください。

%SYSTEM

エラー・メッセージといっしょに、ネイティブ・エラーが次の形式で表示されます。ここで xxxx は数値です。

pfNativeError=xxxx

これは SQL/Services によって返されるエラーです。 このエラーは、SQL/Services サーバがインストールされている OpenVMS システム上の SQLSRV.H ファイルから探してください。これらのエラーの一覧については、「SQL/Services エラー」の説明を参照してください。


プログラミング上の注意

ここでは、ODBC ドライバを呼び出す ODBC アプリケーションを作成する際に注意すべき点について説明します。

以下の内容について説明します。

--	接続文字列のフォーマッティング

--	プログラムの中でのクライアント・ログを有効にする

--	ロック・タイムアウトの短縮

--	プログラムのリンク

--	リストの使用

--	db キーの使用

--	並列性と性能の向上

--	SQLColumns 関数の使用

--	ODBC ドライバの機能、特徴、特性

ODBC アプリケーションを作成する場合、ドライバ・マネージャ、ODBC 呼び出し、ODBC 環境一般についての詳細は、『 Microsoft Open Database Connectivity Software Development Kit Programmer's Reference 』を参照してください。


接続文字列のフォーマット

SQLDriverConnect 関数呼び出しの接続文字列引数に含まれる、キーワードのリストを以下に示します。 指定されていないキーワードは ODBC Administrator のデータ・ソースに対する項目から読み込まれます。 接続文字列で指定した値は、ODBC Administrator で指定した値を上書きします。 SQLDriverConnect 関数についての詳細は、『 Microsoft ODBC Programmer's Reference Manual 』を参照してください。

キーワード	説明

DSN=	ODBC データ・ソース名

UID=	ユーザid

PWD=	パスワード (パスワードがない場合は、 PWD=;)

PWV= 	補助のパスワード ( DBI Gateways で使用)

SVR= 	サーバ名 (ノード名 または TCP/IP アドレス)

DATABASE=	DEC SQL ATTACH 文

CLS=	SQL/Services クラス名

XPT=	SQL/Services 伝送 (1=DECnet, 2=TCP/IP, 4=IPX/SPX)

DBA= 	データベース属性 (W=書き込みアクセス、 R=読み込み専用アクセス)

TLO=	変換オプション

TLL=	変換ライブラリ名

DSO=	データベース・オプション (有効な値の一覧は、「データ・ソースの指定」の DBI オプション・フィールドの説明を参照してください。)

接続文字列に次のキーワードを指定すると、ドライバは ODBC Administrator の値を読み込みません。

DRIVER={DEC ODBC Driver}

有効な接続文字列の例

1) DSN=Personnel;UID=Kotzwinkle;PWD=;

2) DRIVER={DEC ODBC Driver};UID=Kotzwinkle;PWD=whatever;SVR=Nodel;

CLS=generic;XPT=1;DBA=W;

DATABASE=ATTACH 'filename dua1:[user]personnel.rdb';DSO=0;


プログラムの中での SQL/Services クライアント・ログを有効にする

SQL/Services クライアント・ログをプログラムの中で有効にするには、ODBC SQLSetConnectOption 関数を呼び出します。この関数は、接続の属性を制御するオプションを設定します。 SQL/Services のクライアント・ログを有効にするには、 fOption 引数の値を 9001 に設定します。 また vParam 引数には、適切な SQL/Services ログ値を設定します。ログ値および SQL/Services クライアント・ログ一般についての詳細は、SQL/Services のドキュメントを参照してください。

SQL/Services クライアント・ログに関する情報を取得するには、 ODBC SQLGetConnectOption 関数を使用します。この関数は、接続オプションの現在の設定を返します。 fOption 引数の値を 9001 に設定すると、 SQL/Services クライアント・ログ値を返します。 pvParam 引数により返される値は、 32 ビットの整数値です。


プログラムの中でのロック・タイムアウトの短縮

DEC Rdb は、トランザクション間のロック競合が解除されるのをいつまでも待ちます。DEC Rdb がロックの解除を待つ時間を制限するには、データ・ソースに接続する前に ODBC SQLSetConnectOption 関数を呼び出します。 SQL_QUERY_TIMEOUT オプションには、ゼロ以外の値を指定します。

ODBC SQLSetConnectOption 関数を使用して指定したロック・タイムアウト値は、 DECODBC.INI または WIN.INI ファイルで指定した値を上書きします。 DECODBC.INI または WIN.INI ファイルでの値の指定についての詳細は、「ロック・タイムアウトの短縮」を参照してください。


ODBC.LIB とのリンク

プログラムをリンクする場合、IMPORT ライブラリ ODBC.LIB とリンクしなければなりません。 IMPORT ライブラリは、ODBC ドライバ・インストレーション・ディスケットに入っています。


DEC Rdb リストの使用

リスト・カーソルを使用しなくても、DEC Rdb リスト列で SQL 操作を行うことができます。 リスト列は ODBC LONGVARBINARY データ型と解釈されます。このデータ型を使用すると ODBC アプリケーションは、標準 SQL 言語構造体のリストを含む列を操作することができます。

伝送 blob（Binary Large OBject) アクセスを使用するためには、 パラメータ・マーカを使用してリストを含む列を参照しなければなりません。

NOTE: リスト・カーソルを使用して個々のリストにアクセスする場合は、まず  ODBC SQLSetConnectOption 関数を呼び出し、SQRDB_BLOB_ACCESS 接続オプションに値 SQRDB_BLOB_ACCESS_WITH_LISTS を指定しなければなりません。

ODBC ドライバのインストレーション・ディスケットには、 SQRDB.H というファイルがあります。このファイルには、リスト・カーソルを使用するアプリケーションに必要な定数が入っています。 このファイルをアプリケーション・プログラムにインクルードしてください。 SQRDB.H については、「サンプル・ファイル」を参照してください。

ODBC ドライバのインストレーション・ディスケットには、 EXAMPLE1.TXT および EXAMPLE2.TXT というファイルもあります。これらについては、「サンプル・ファイル」を参照してください。 EXAMPLE1.TXT は、アプリケーションがリスト・カーソルを使用してデータを DEC Rdb として格納する方法を示しています。 EXAMPLE2.TXT は、リスト・カーソルを使用して DEC Rdb として格納したデータを検索する方法を示しています。


dbkey の使用

ここでは、ODBC ドライバで db キーを使用する方法について説明します。


db キーに関する情報の獲得

ODBC SQLSpecialColumns 関数は、表の列に関する情報を返します。 この関数を ODBC ドライバに使用すると、DEC Rdb の表と関連づけられた DEC Rdb db キーに関する情報を返します。


db キーを返す INSERT 文

db キーを返す SQL INSERT 文を実行する場合、出力パラメータを使用して db キーを検索します。 ODBC SQLBindParameter 関数を呼び出し、出力バッファを INSERT 文の db キー・パラメータ・マーカへバインド（対応づけ) します。

次の例に示すように、 INSERT 文に RETURNING DBKEY INTO ? 句を使用します。この例では、入力値を 2 つ、出力値を 1 つと仮定しています。

INSERT INTO tablename VALUES(?,?) RETURNING DBKEY INTO ?


WHERE 句の中の db キー

db キーは、SQL 文の WHERE 句で使用できます。 ただし、db キーの値はパラメータ・マーカで表さなければなりません。


並列性と性能の向上

アプリケーションの並列性と性能を向上させるには、以下の操作を実行します。

--	ODBC SQLSetConnectOption 関数の SQL_AUTOCOMMIT オプションをオフにし、 ODBC SQLTransact 関数を使用して手動でコミット操作またはロールバック操作を行います。

--	データ・ソースを更新しないトランザクションを実行する場合、 ODBC SQLSetConnectOption 関数の SQL_ACCESS_MODE オプションを SQL_MODE_READ_ONLY に設定します。

--	ODBC エスケープ句を使用していない場合、SQLSetConnectOption 関数または ODBC SQLSetStmtOption 関数の SQL_NOSCAN オプションを TRUE に設定します。

--	SELECT 文から値を検索するには、SQLGetData 関数のかわりに ODBC SQLBindCol 関数を使用します。

--	たくさんの行を含む表からデータを検索する場合は、ODBC SQLFetch 関数のかわりに ODBC SQLExtendedFetch 関数を使用します。

--	ネットワーク・バッファ・サイズを 5000 バイトに設定します。


SQLColumns 関数

SQLColumns 関数は、『 Microsoft ODBC Programmer's Reference manual 』での記述に 1 列を加えた結果を返します。列を更新したかどうかは 13 番目の列でわかります。

列名	データ型	値

UPDATABLE	Smallint 	SQL_ATTR_READONLY または SQL_ATTR_WRITE

not NULL


サポートされている機能

ODBC ドライバの機能、特徴、特性について説明します。

アプリケーションの中で ODBC SQLGetInfo 関数を呼び出すと、ODBC ドライバでサポートされている機能の情報を取得することができます。


API 準拠

ODBC ドライバは、すべてのコア関数とレベル 1 関数、そしていくつかのレベル 2 関数をサポートしています。 以下にコア関数、レベル 1 関数、およびサポートしているレベル 2 関数の一覧を示します。

o	コア関数:

--	SQLAllocConnect

--	SQLAllocEnv

--	SQLAllocStmt

--	SQLBindCol

--	SQLCancel

--	SQLColAttributes

--	SQLConnect

--	SQLDescribeCol

--	SQLDisconnect

--	SQLError

--	SQLExecDirect

--	SQLExecute

--	SQLFetch

--	SQLFreeConnect

--	SQLFreeEnv

--	SQLFreeStmt

--	SQLGetCursorName

--	SQLNumResultCols

--	SQLPrepare

--	SQLRowCount

--	SQLSetCursorName

--	SQLSetParam

--	SQLTransact

o	レベル 1 関数:

--	SQLBindParameter

--	SQLColumns

--	SQLDriverConnect

--	SQLGetConnectOption

--	SQLGetData

--	SQLGetFunctions

--	SQLGetInfo

--	SQLGetStmtOption

--	SQLGetTypeInfo

--	SQLParamData

--	SQLPutData

--	SQLSetConnectOption

--	SQLSetStmtOption

--	SQLSpecialColumns

--	SQLStatistics

--	SQLTables

o	レベル 2 関数:

--	SQLDataSources

--	SQLDescribeParam

--	SQLDrivers

--	SQLExtendedFetch

--	SQLForeignKeys

--	SQLMoreResults

--	SQLNativeSQL

--	SQLNumParams

--	SQLParamOptions

--	SQLPrimaryKeys

--	SQLProcedures

--	SQLProcedureColumns

--	SQLSetScrollOptions


SQL 文法の拡張

ODBC ドライバによってサポートされている SQL 文法の拡張とその動作について説明します。

表 「ODBC ドライバ SQL 文法の拡張」にリストされている項目は、ODBC SQLGetInfo 関数によって取得できる情報のサブセットです。 プログラムの中でこの表の値を検索するには、対応する C 言語の #define によるマクロ定義を SQLGetInfo 関数にわたします。

ODBC ドライバ SQL 文法の拡張

情報の種類 	#define 	値

Table 句の変更	SQL_ALTER_TABLE	ADD, DROP

列別名	SQL_COLUMN_ALIAS	No

ナル列との連結の結果 	SQL_CONCAT_NULL_BEHAVIOR 	ナル

相関名	SQL_CORRELATION_NAME	ユーザが定義できます*

ORDER BY リスト内の式 	SQL_EXPRESSIONS_IN_ORDERBY	Yes*

Group By 句	SQL_GROUP_BY	SELECT リストにない列を指定できます

ソース特有のキーワード	SQL_KEYWORDS	None

ナルではない列の制約	SQL_NON_NULLABLE_COLUMNS	Yes

ナル・ソート順	SQL_NULL_COLLATION	ナルはSELECT リストの下位に置かれます

整合性強化ファシリティ 	SQL_ODBC_SQL_IEF 	サポートされていません

選択リストで必要な Order By 列	SQL_ORDER_BY_COLUMNS_IN_SELECT	No

外部結合 	SQL_OUTER_JOINS 	Yes ( DEC Rdb V6.0 以降)

No (DBI)*

サポートされている位置付け SQL 文	SQL_POSITIONED_STATEMENTS	DELETE, UPDATE

プロシージャ 	SQL_PROCEDURES 	Yes( DEC Rdb V6.0 以降)

No (DBI)*

サポートされている副問合せ	SQL_SUBQUERIES	Comparison, Exists, In,または Quantified

サポートされている集合和	SQL_UNION	Union,または Union All

* ODBC Administrator を使用して、DBI オプションで変更できます。


ODBC ドライバの機能

ここでは ODBC ドライバの機能について説明します。

表 「ODBC ドライバの機能」にリストされている項目は、 ODBC SQLGetInfo 関数によって取得できる情報のサブセットです。 プログラムの中でこの表の値を検索するには、対応する C 言語の #define によるマクロ定義を ODBC SQLGetInfo 関数にわたします。

ODBC ドライバの機能

情報の種類 	#define 	値

SQLProcedures により返されるプロシージャはすべて実行可能 	SQL_ACCESSIBLE_PROCEDURES 	No

SQLTables により返される表はすべてアクセス可能 	SQL_ACCESSIBLE_TABLES 	Yes

アクティブな接続の最大数 	SQL_ACTIVE_CONNECTIONS 	定義されていません

アクティブな文の最大数 	SQL_ACTIVE_STATEMENTS 	定義されていません

サポートされている取り出し方向 	SQL_FETCH_DIRECTION 	Next

ファイル使用	SQL_FILE_USAGE	サポートしていません

SQLGetData 拡張	SQL_GETDATA_EXTENSIONS	None

複数の結果セット 	SQL_MULT_RESULT_SETS 	サポートしていません

取り出し時にドライバが更新を検出する 	SQL_ROW_UPDATES	No

サポートされている並列性制御オプション 	SQL_SCROLL_CONCURRENCY 	ロック

サポートされているカーソル型 	SQL_SCROLL_OPTIONS 	カーソルは順方向にしかスクロールしません

検索パターンをエスケープするための文字列 	SQL_SEARCH_PATTERN_ESCAPE 	&


SQL 識別子

ODBC ドライバが使用する SQL 識別子について説明します。

表 「ODBC ドライバの SQL 識別子」にリストされている項目は、 ODBC SQLGetInfo 関数により取得できる情報のサブセットです。 プログラムの中でこの表の値を検索するには、対応する C 言語の #define によるマクロ定義を ODBC SQLGetInfo 関数にわたします。

ODBC ドライバの SQL 識別子

情報の種類 	#define 	値

識別子の大文字と小文字の区別 	SQL_IDENTIFIER_CASE 	大文字

識別子を区切る文字列 	SQL_IDENTIFIER_QUOTE_CHAR 	サポートされていません

選択式の列の最大数	SQL_MAX_COLUMNS_IN_SELECT	500

表の列の最大数	SQL_MAX_COLUMNS_IN_TABLE	500

列識別子の最大長 	SQL_MAX_COLUMN_NAME_LEN 	31

カーソル識別子の最大長 	SQL_MAX_CURSOR_NAME_LEN 	30

所有者識別子の最大長 	SQL_MAX_OWNER_NAME_LEN 	0

プロシージャ識別子の最大長 	SQL_MAX_PROCEDURE_NAME_LEN  	0

修飾子識別子の最大長 	SQL_MAX_QUALIFIER_NAME_LEN 	0

表識別子の最大長 	SQL_MAX_TABLE_NAME_LEN 	31

所有者に関するデータ・ソースのターム 	SQL_OWNER_TERM 	サポートされていません

所有者の使用	SQL_OWNER_USAGE	サポートされていません

プロシージャに関するデータ・ソースのターム 	SQL_PROCEDURE_TERM 	サポートされていません

修飾子と修飾名を区別するための文字列 	SQL_QUALIFIER_NAME_SEPARATOR 	.

修飾子の使用	SQL_QUALIFIER_USAGE	サポートされていません

修飾子に関するデータ・ソースのターム 	SQL_QUALIFIER_TERM 	サポートされていません

引用符つき識別子	SQL_QUOTED_IDENTIFIER_CASE	大文字と小文字を区別します

表名に使用できる特殊文字	SQL_SPECIAL_CHARACTERS	$

表に関するデータ・ソースのターム 	SQL_TABLE_TERM 	TABLE


名前とバージョン番号

DEC Rdb の名前とバージョン番号、ODBC ドライバの名前、バージョン番号、および準拠レベルについて説明します。

表 「ODBC ドライバ名とバージョン番号」にリストされている項目は、 ODBC SQLGetInfo 関数によって取得できる情報のサブセットです。 プログラムの中でこの表の値を検索するには、対応する C 言語の #define によるマクロ定義を ODBC SQLGetInfo 関数にわたします。

ODBC ドライバ名とバージョン番号

情報の種類 	#define 	値

DBMS 名 	SQL_DBMS_NAME 	Rdb

DBMS ジャージョン番号 	SQL_DBMS_VER 	04.01.0000 以降

ドライバ・ファイル名 	SQL_DRIVER_NAME 	SQRDB.DLL

サポートしている ODBC バージョン   SQL_DRIVER_ODBC_VER	02.00

ドライバ・バージョン数 	SQL_DRIVER_VER 	02.00.nnnn

API 準拠レベル 	SQL_ODBC_API_CONFORMANCE 	レベル 1

SAG CLI 準拠レベル 	SQL_ODBC_SAG_CLI_CONFORMANCE 	SAG 準拠

SQL 準拠レベル 	SQL_ODBC_SQL_CONFORMANCE 	コア


スカラ関数

ODBC ドライバでサポートされているスカラ関数について説明します。

表 「ODBC ドライバのスカラ関数」にリストされている項目は、 ODBC SQLGetInfo 関数により取得できる情報のサブセットです。 アプリケーションの中でこの表の値を検索するには、対応する C 言語の #define によるマクロ定義を ODBC SQLGetInfo 関数にわたします。

ODBC ドライバのスカラ関数

情報の種類	#define	値

サポートされている変換スカラ関数	SQL_CONVERT_FUNCTIONS	サポートされています

サポートされている数値スカラ関数	SQL_NUMERIC_FUNCTIONS	ABS, SIGN, PI

サポートされている文字列スカラ関数	SQL_STRING_FUNCTIONS	CONCAT, LCASE, LEFT, LTRIM,

LENGTH, SPACE, SUBSTRING,

UCASE, LOCATE, RIGHT, RTRIM

サポートされているシステム・スカラ関数SQL_SYSTEM_FUNCTIONS	IFNULL, USERNAME, DATABASE

サポートされている日時スカラ関数	SQL_TIMEDATE_FUNCTIONS	CURDATE, CURTIME, DAYOFMONTH,

DAYOFWEEK, DAYOFYEAR, HOUR,

NOW, MINUTE, MONTH, SECOND, YEAR


トランザクション・サポート

ODBC ドライバのトランザクション・サポートについて説明します。

表 「ODBC ドライバのトランザクション・サポート」にリストされている項目は、 ODBC SQLGetInfo 関数により取得できる情報のサブセットです。 アプリケーションの中でこの表の値を検索するには、対応する C 言語の #define によるマクロ定義を ODBC SQLGetInfo 関数にわたします。

ODBC ドライバのトランザクション・サポート

情報の種類 	#define 	値

COMMIT のカーソルへの影響 	SQL_CURSOR_COMMIT_BEHAVIOR 	カーソルをクローズします

ROLLBACK のカーソルへの影響 	SQL_CURSOR_ROLLBACK_BEHAVIOR	カーソルをクローズします

省略時の設定のトランザクション・アイソレーション・レベル SQL_DEFAULT_TXN_ISOLATION	SQL_TXN_READ_COMMITTED

アクティブなトランザクションを持つことのできる接続数 	SQL_MULTIPLE_ACTIVE_TXN 	複数

トランザクションでサポートされる文 	SQL_TXN_CAPABLE 	DML,DDL (DEC Rdb の場合), DML (DEC DB Integrator Gateway の場合)

サポートされるトランザクション・アイソレーション・レベル SQL_TXN_ISOLATION_OPTIONS 	SQL_TXN_READ_COMMITTED

SQL_TXN_REPEATABLE_READ

SQL_TXN_SERIALIZABLE


SQL データ型から ODBC データ型へのマッピング

SQL データ型が ODBC データ型へどのようにマッピングされるかを次の表に示します。

SQL データ型から ODBC データ型へのマッピング

もとの SQL データ型 	マッピングされる ODBC データ型

BIGINT 	SQL_BIGINT

BIGINT(p), ただし p > 0 	SQL_DECIMAL

CHAR(n) 	SQL_CHAR

DATE ANSI	SQL_DATE

DATE VMS	SQL_TIMESTAMP

DECIMAL(n,0), ただし n < 5 	SQL_SMALLINT

DECIMAL(n,0), ただし 5 <= n < 10 	SQL_INTEGER

DECIMAL(n,0), ただし 10 <= n < 19 	SQL_BIGINT

DECIMAL(n,p), ただし n < 19 and p > 0 	SQL_DECIMAL

DECIMAL(n,p), ただし n > 18 	SQL_DOUBLE

DOUBLE PRECISION 	SQL_DOUBLE

FLOAT 	SQL_DOUBLE

INTEGER 	SQL_INTEGER

INTEGER(p), ただし p > 0 	SQL_DECIMAL

INTERVAL	SQL_VARCHAR

LIST OF BYTE VARYING 	SQL_VARBINARY

LONG VARCHAR 	SQL_LONGVARCHAR

NUMERIC(n,0), ただし n < 5 	SQL_SMALLINT

NUMERIC(n,0), ただし 5 <= n < 10 	SQL_INTEGER

NUMERIC(n,0), ただし 10 <= n < 19 	SQL_BIGINT

NUMERIC(n,p), ただし n < 19 and p > 0 	SQL_DECIMAL

NUMERIC(n,p), ただし n > 18 	SQL_DOUBLE

QUADWORD 	SQL_BIGINT

QUADWORD(p), ただし p > 0 	SQL_DECIMAL

REAL 	SQL_REAL

SMALLINT 	SQL_SMALLINT

SMALLINT(p), ただし p > 0 	SQL_DECIMAL

TIME	SQL_TIME

TIMESTAMP	SQL_TIMESTAMP

TINYINT 	SQL_TINYINT

TINYINT(p), ただし p >  0 	SQL_DECIMAL

VARCHAR(n) 	SQL_VARCHAR


ODBC データ型から SQL データ型へのマッピング

ODBC データ型が SQL データ型へどのようにマッピングされるかを次の表に示します。

ODBC データ型から SQL データ型へのマッピング

もとの ODBC データ型 	マッピングされる SQL データ型

SQL_BIGINT 	BIGINT

SQL_BINARY 	LIST OF BYTE VARYING

SQL_BIT 	サポートされていません

SQL_CHAR 	CHAR(n)

SQL_DATE 	DATE ANSI

SQL_DECIMAL(n,0), ただし n < 5 	SMALLINT

SQL_DECIMAL(n,0), ただし 5 <= n < 10 	INTEGER

SQL_DECIMAL(n,0), ただし 10 <= n < 19 	BIGINT

SQL_DECIMAL(n,p), ただし p > 0 	DECIMAL(n,p)

SQL_DOUBLE 	DOUBLE PRECISION

SQL_FLOAT 	DOUBLE PRECISION

SQL_INTEGER 	INTEGER

SQL_LONGVARBINARY 	LIST OF BYTE VARYING

SQL_LONGVARCHAR 	LONG VARCHAR

SQL_NUMERIC(n,0), ただし n < 5 	SMALLINT

SQL_NUMERIC(n,0), ただし 5 <= n < 10 	INTEGER

SQL_NUMERIC(n,0), ただし 10 <= n < 19 	BIGINT

SQL_NUMERIC(n,p), ただし p > 0 	DECIMAL(n,p)

SQL_REAL 	REAL

SQL_SMALLINT 	SMALLINT

SQL_TIME 	TIME

SQL_TIMESTAMP 	DATE VMS または TIMESTAMP

SQL_TINYINT 	TINYINT

SQL_VARBINARY 	LIST OF BYTE VARYING

SQL_VARCHAR 	VARCHAR(n) または INTERVAL


DEC Rdb リスト (Blobs) への透過的なアクセス
DEC Rdb リスト (Blob) への透過的なアクセス

リスト・カーソルを使用せずに、DEC Rdb リスト列で SQL 操作を行うことができます。 リスト列は ODBC LONGVARBINARY データ型として解釈されます。このデータ型を使用するとアプリケーションは、標準 SQL 言語構造体のリストを含む列を操作することができます。

NOTE: リスト・カーソルを使用して個々のリストにアクセスする場合は、まず ODBC SQLSetConnectOption 関数を呼び出し、SQRDB_WITH=LISTS 接続オプションに値 SQRDB_BLOB_ACCESS_WITH_LISTS を指定します。


SQL/SERVICES のエラー

ODBC ドライバの実行中に表示されることのある SQL/Services のエラーの一覧を示します。 これらのエラーは常に次の形式で表示されます。ただし、xxxx は数値です。

pfNativeError=xxxx

DEC Rdb、 SQL、 ネットワーク、または システムのエラーは、SQL/Services のエラーとして表示されます。

以下に、エラーを値の順に示します。 左端にある 4 桁の数値は、メッセージに表示される値です。

pfNativeError


-2000,SQLSRV_INVARG

説明: 不正なルーチン・パラメータが指定されました。

ユーザ操作: すべてのルーチン・パラメータを調べ、正しい値に修正してからもう一度実行してください。


-2001,SQLSRV_INVBUFSIZ

説明: 不正な読込みバッファ・サイズまたは書込みバッファ・サイズが指定されました。

ユーザ操作: 読込みバッファ・サイズまたは書込みバッファ・サイズの値を修正してください。


-2002,SQLSRV_ASCACT

説明: 不正なルーチン・パラメータが指定されました。

ユーザ操作: すべてのルーチン・パラメータを調べ、正しい値に修正してからもう一度実行してください。


-2003,SQLSRV_NETERR

説明: ネットワーク・エラーです。

ユーザ操作: （プラットフォームにしたがって) DECnet, TCP/IP, または NetWare のエラー・ファイルを探し、エラー・コードを見て操作を決めてください。


-2004,SQLSRV_SRVERR

説明: サーバ・エラーです。

ユーザ操作: 別のエラー・ソースを調べてください。


-2005,SQLSRV_INVASC

説明: 不正な結合識別子が指定されました。

ユーザ操作: DEC 社に SPR を提出してください。


-2006,SQLSRV_INVSQLDA

説明: SQLDA または SQLDA_ID が正しくありません。

ユーザ操作: DEC 社に SPR を提出してください。


-2007,SQLSRV_PRSERR

説明: プロトコル・メッセージに関する解析エラーです。これは内部エラーです。

ユーザ操作: DEC 社に SPR を提出してください。


-2008,SQLSRV_INVSTMID

説明: 不正な文識別子が指定されました。

ユーザ操作: DEC 社に SPR を提出してください。


-2009,SQLSRV_INVCURNAM

説明: 不正なカーソル名が指定されました。 存在しないカーソル名が指定されました。

ユーザ操作: 正しいカーソル名を指定してください。


-2010,SQLSRV_ASCNOTACT

説明: 接続がアクティブではありません。

ユーザ操作: DEC 社に SPR を提出してください。


-2011,SQLSRV_INTERR

説明: 内部エラーです。

ユーザ操作: DEC 社に SPR を提出してください。


-2012,SQLSRV_OPNLOGFIL

説明: ログが指定されましたが、ログ・ファイルをオープンできません。

ユーザ操作: 機密保護上の理由、使用可能なディスク領域など、プラットフォームに固有なログ・ファイルをオープンできない理由を調べてください。


-2013,SQLSRV_NO_MEM

説明: API がメモリの割当てに失敗しました。

ユーザ操作: クライアント・システム上のメモリを解放してから SQL/Services を実行してください。


-2014,SQLSRV_INVSQLCA

説明: 不正なルーチン・パラメータが指定されました。

ユーザ操作: すべてのルーチン・パラメータを調べ、正しい値に修正してからもう一度実行してください。


-2015,SQLSRV_SQLDA_NOTALL

説明: 静的メモリの割当てを解除しようとしました。

ユーザ操作: DEC 社に SPR を提出してください。


-2016,SQLSRV_MULTI_ACT

説明: バッチ処理された sqlsrv_execute, sqlsrv_execute_in_out, or sqlsrv_fetch_many のコンテキストがアクティブです。

ユーザ操作: DEC 社に SPR を提出してください。


-2018,SQLSRV_INVIDX

説明: sqlda_index_array が正しくありません。

ユーザ操作: DEC 社に SPR を提出してください。


-2019,SQLSRV_INVEXEFLG

説明: 不正な実行フラグが指定されました。

ユーザ操作: DEC 社に SPR を提出してください。


-2020,SQLSRV_FTRSYNERR

説明: フィルタ式の構文エラーです。

ユーザ操作: sqlsrv_set_filter ルーチン呼び出しに関するフィルタを正しく指定してください。


-2021,SQLSRV_INVASCSTR

説明: ASSOCIATE_STR のパラメータが正しくありません。

ユーザ操作: DEC 社に SPR を提出してください。


-2022,SQLSRV_INVENVTAG

説明: 不正な環境タグが指定されました。

ユーザ操作: DEC 社に SPR を提出してください。


-2023,SQLSRV_INVENVVAR

説明: 不正な環境変数が指定されました。

ユーザ操作: DEC 社に SPR を提出してください。


-2024,SQLSRV_INVREPCNT

説明: 不正な反復回数が指定されました。

ユーザ操作: DEC 社に SPR を提出してください。


-2025,SQLSRV_DUPCRSNAM

説明: カーソル名が重複しています。

ユーザ操作: 正しいカーソル名を指定し直してください。


-2026,SQLSRV_INVCOLNUM

説明: 範囲外の列番号が指定されました。

ユーザ操作: すべてのルーチン・パラメータを調べ、正しい値に修正してからもう一度実行してください。


-2027,SQLSRV_INVDATTYP

説明: 不正なデータ型が指定されました。

ユーザ操作: 正しいデータ型を指定してください。


-2028,SQLSRV_INCDATTYP

説明: 列との互換性のないデータ型が指定されました。

ユーザ操作: すべてのルーチン・パラメータを調べ、正しい値に修正してからもう一度実行してください。


-2029,SQLSRV_USRDATALL

説明: SQL/Services ではなくユーザがデータバッファを割り当てました。

ユーザ操作: DEC 社に SPR を提出してください。


-2030,SQLSRV_ACTSTM

説明: 文 id がすでにアクティブなカーソルを持っています。

ユーザ操作: カーソルをクローズするか、文をもう一度準備（prepare)してください。


-2031,SQLSRV_APINOTSUP

説明: サポートされていない API です。 SQL/Services クライアントが、クライアントではサポートされていないサーバ情報にアクセスしようとしました。

ユーザ操作: DEC 社に SPR を提出してください。


-2032,SQLSRV_INV_CLS

説明: 不正なクラス名が指定されました。

ユーザ操作: サーバ設定ファイル（サーバ・システム管理者に確認する)にあるクラス名を sqlsrv_set_server_class に指定してください。


-2033,SQLSRV_NO_PRCAVL

説明: 使用できるプロセスがありません。

User Action: サーバ・システム上のサーバの最大数を超えました。後でもう一度試すか、サーバ・システム管理者に相談して、サーバ構成ファイルの MAX パラメータを大きくしてください。


-2034,SQLSRV_GETACCINF

説明: 通信サーバが、サーバを実行するために適切なアカウント情報を獲得できませんでした。

ユーザ操作: 詳しい内容については、サーバ・システム管理者に相談してログ・ファイルを調べてもらってください。


-2035,SQLSRV_EXEINTERR

説明: 実行サーバで内部エラーが起こりました。

ユーザ操作: 実行サーバのログ・ファイルを調べ、実行サーバに関する問題を修正してください。修正できない場合、DEC 社に SPR を提出してください。


-2036,SQLSRV_HOSTERR

説明: TCP/IP でホスト・ファイルにアクセスしているときにエラーが起こりました。リクエストされたノード名が見つからないか、ホスト・ファイルが存在しないか、読み込めません。

ユーザ操作: ホスト・ファイルの場所と形式については、プラットフォームに固有のドキュメントを参照してください。


-2037,SQLSRV_XPT_MISSING

説明: 有効なはずのトランスポートを選択しましたが、現在は無効になっています。このエラーは、特定のトランスポートを無効にしてアプリケーションをリンクしている DOS システムなどで起こることがあります。

ユーザ操作: MAKE またはリンク・プロシージャを調べて、リクエストされたトランスポートが有効であることを確認してください。


-2042,SQLSRV_SRVNOTSUP

説明: サーバがサポートされていません。クライアントは、接続されているサーバのバージョンではサポートされていない操作をリクエストしています。

ユーザ操作: DEC 社に SPR を提出してください。


-2043,SQLSRV_INVSETLEN

説明: 指定された列では与えられた長さを使用できません。指定された列に長さを設定することができないこともあります。

ユーザ操作: 有効な長さを指定してください。


-2044,SQLSRV_INVSQLLEN

説明: SQLDA または SQLDA2 の SQLLEN フィールドが、列のサイズより大きな値に設定されています。

ユーザ操作: SQLLEN に有効な値を指定してください。


-2045,SQLSRV_DLL_LOAD_ERR

説明: MS Windows の LoadLibrary 呼出しからエラーが返されました。

ユーザ操作: TCP/IP 用 DLL (WSOCKETS.EXE) が検索 PATH にあることを確認してください。


-2046,SQLSRV_DLL_ADDR_ERR

説明: MS Windows の GetProcAddress 呼出しからエラーが返されました。 PATHWORKS for DOS (TCP/IP) のライブラリ・ルーチンには使用できないものがあります。

ユーザ操作: 互換性のあるバージョンの PATHWORKS for DOS (TCP/IP) をインストールしてください。


サンプル・ファイル

ここでは、以下のサンプル・ファイルを示します。

--	SQRDB.H --- ODBC オプション用のインクルード・ファイル

--	EXAMPLE1.TXT --- データを DEC Rdb リスト として格納するファイル

--	EXAMPLE2.TXT --- DEC Rdb リスト として格納したデータを検索するファイル

これらのファイルについての詳細は、「サポートしている機能」を参照してください。


ODBC オプション用のインクルード・ファイル

このファイルには、リストを使用するアプリケーションに必要な定数が入っています。

/********************************************************************

SQRDB.H - This is the include file for ODBC options that are specific to the Rdb Driver.

 Copyright 1993 By Digital Equipment Corporation

*********************************************************************/

#ifndef __SQRDB

#define __SQRDB

/*****************************************/

/* Rdb Driver specific CONNECT Options   */

/*****************************************/

#define SQRDB_SSC_LOG      9001   /* SQL/Services Client Logging */

#define SQRDB_BLOB_ACCESS  9004   /* Specifies how binary data   */

                                  /* (blobs) are accessed.       */

/*************************************************************************/

/* Logging Values associated with the SQRDB_SSC_LOG connect option       */

/*************************************************************************/

#define SQRDB_SSC_LOG_DISABLED      0    /* 0 = Turn off logging.        */

#define SQRDB_SSC_LOG_ASSOCIATION   1    /* To enable more than one type */

#define SQRDB_SSC_ROUTINE           2    /* of logging, use the sum of   */

#define SQRDB_SSC_LOG_PROTOCOL      3    /* the desired logging values.  */

/*************************************************************************/

/* Values associated with the SQRDB_BLOB_ACCESS connect option           */

/*************************************************************************/

#define SQRDB_BLOB_ACCESS_TRANSPARENT   0    /* Access is transparent to */

                                             /* the application.         */

#define SQRDB_BLOB_ACCESS_WITH_LISTS    1    /* Access is controlled by  */

                                             /* the application via the  */

                                             /* use of list cursors.     */

/*****************************************/

/* Rdb Driver specific STATEMENT Options */

/*****************************************/

#define SQRDB_LIST_LEN     9002   /* Maximum length of data that */

                                  /* will be returned for a      */

                                  /* segmented string.           */

                                  /* This option can be used to  */

                                  /* override the default segment*/

                                  /* size of the string.         */

#define SQRDB_CURSOR_TYPE  9003   /* Type of cursor that will be */

                                  /* declared when an SQL        */

                                  /* statement is executed.      */

/************************************************************************/

/* Cursor types associated with the SQRDB_CURSOR_TYPE statement option  */

/************************************************************************/

#define SQRDB_CURSOR_READ          0   /* Read             */

#define SQRDB_CURSOR_UPDATE        1   /* Update           */

#define SQRDB_CURSOR_INSERT        2   /* Insert           */

#define SQRDB_CURSOR_UPDATE_ONLY   3   /* Update-Only      */

#endif /* #ifndef __SQRDB */


リスト・カーソルを使用してデータをリストとして格納するファイル

このフィルは、リスト・カーソルを使用してデータを DEC Rdb リストとして格納しています。

/* Connect to data source with auto commit disabled */

SQLAllocEnv(&henv)

SQLAllocConnect(henv, &hdbc)

SQLSetConnectOption(hdbc, SQL_AUTOCOMMIT, OFF)

SQLSetConnectOption(hdbc, SQRDB_BLOB_ACCESS, SQRDB_BLOB_ACCESS_WITH_LISTS)

SQLConnect(hdbc, ...)

/* Create a table that contains a list column */

SQLAllocStmt(hdbc, &hstmt0)

SQLExecDirect(

  hstmt0,

  "create table EMP (EMP_ID char(5), ADDRESS list of byte varying(25))",

  SQL_NTS)

/* Open an insert only cursor on the table EMP */

SQLAllocStmt(hdbc, &hstmt1)

SQLSetCursorName(hstmt1, "C1", SQL_NTS)

SQLSetStmtOption(hstmt1, SQRDB_CURSOR_TYPE, SQRDB_CURSOR_INSERT)

SQLExecDirect(

  hstmt1,

  "select EMP_ID, ADDRESS from EMP",

  SQL_NTS)

/* Insert one row into the table EMP */

SQLAllocStmt(hdbc, &hstmt2)

SQLExecDirect(

  hstmt2,

  "insert into cursor C1 (EMP_ID) values('00167')",

  SQL_NTS)

/* Open an insert only cursor on the ADDRESS column of table EMP */

SQLAllocStmt(hdbc, &hstmt3)

SQLSetCursorName(hstmt3, "ADDRESS_CUR", SQL_NTS)

SQLSetStmtOption(hstmt3, SQRDB_CURSOR_TYPE, SQRDB_CURSOR_INSERT)

SQLExecDirect(

  hstmt3,

  "select ADDRESS where current of C1",

  SQL_NTS)

/* Insert values into the ADDRESS column */

SQLAllocStmt(hdbc, &hstmt4)

SQLExecDirect(

  hstmt4,

  "insert into cursor ADDRESS_CUR values('42 Main Street')",

  SQL_NTS)

SQLExecDirect(

  hstmt4,

  "insert into cursor ADDRESS_CUR values('Dayton, OH 45431')",

  SQL_NTS)

/* Commit the transaction */

SQLTransact(hdbc, SQL_COMMIT)


リスト・カーソルを使用してリストを検索するファイル

このファイルは、リスト・カーソルを使用して DEC Rdb として格納されたデータを検索しています。

/* Connect to data source with auto commit disabled */

SQLAllocEnv(&henv)

SQLAllocConnect(henv, &hdbc)

SQLSetConnectOption(hdbc, SQL_AUTOCOMMIT, OFF)

SQLSetConnectOption(hdbc, SQRDB_BLOB_ACCESS, SQRDB_BLOB_ACCESS_WITH_LISTS)

SQLConnect(hdbc, ...)

/* Open a cursor on the table EMP */

SQLAllocStmt(hdbc, &hstmt1)

SQLSetCursorName(hstmt1, "C1", SQL_NTS)

SQLExecDirect(

  hstmt1,

  "select EMP_ID, ADDRESS from EMP",

  SQL_NTS)

/* Have fetch return the data as a character string */

SQLBindCol(hstmt1, 1, SQL_C_CHAR, ...)

/* Fetch one row from table EMP */

SQLFetch(hstmt1);

/* Open a cursor on the ADDRESS column of table EMP */

SQLAllocStmt(hdbc, &hstmt2)

SQLSetStmtOption(hstmt2, SQRDB_CURSOR_TYPE, SQRDB_CURSOR_READ)

SQLExecDirect(

  hstmt2,

  "select ADDRESS where current of C1",

  SQL_NTS)

/* The data type must be set to BINARY. This will cause the driver to */

/* return the data in whatever form it is stored in in the database, */

/* that is, character data will be returned as character data.    */

SQLBindCol(hstmt2, 1, SQL_C_BINARY, ...)

/* Fetch the segments from the ADDRESS column of table EMP */

while (SQLFetch(hstmt2) == SQL_SUCCESS)

/* End the transaction */

SQLTransact(hdbc, SQL_ROLLBACK)