• 検索結果がありません。

Caché SQL の使用法

N/A
N/A
Protected

Academic year: 2021

シェア "Caché SQL の使用法"

Copied!
106
0
0

読み込み中.... (全文を見る)

全文

(1)

Caché SQL の使用法

Version 5.1

2006-03-14

(2)

Caché Version 5.1 2006-03-14 Copyright © 2006 InterSystems Corporation. All rights reserved.

このドキュメントは、 Sun Microsystems、RenderX Inc.、 アドビ システムズ および ワールドワイド・ウェブ・コンソーシアム (www.w3c.org)のツールと情報を使用して、 Adobe Portable Document Format (PDF)で作成およびフォーマットされました。 主要ドキュメント開発ツールは、InterSystemsが構築したCaché と Javaを使用した特別目的のXML処理アプリケーションで す。

Caché 製品とロゴは InterSystems Corporation の登録商標です。

Ensemble 製品とロゴは InterSystems Corporation の登録商標です。

InterSystems という名前とロゴは InterSystems Corporation の登録商標です

このドキュメントは、インターシステムズ社(住所:One Memorial Drive, Cambridge, MA 02142)あるいはその子会社が所有す る企業秘密および秘密情報を含んでおり、インターシステムズ社の製品を稼動および維持するためにのみ提供される。こ の発行物のいかなる部分も他の目的のために使用してはならない。また、インターシステムズ社の書面による事前の同意 がない限り、本発行物を、いかなる形式、いかなる手段で、その全てまたは一部を、再発行、複製、開示、送付、検索可能 なシステムへの保存、あるいは人またはコンピュータ言語への翻訳はしてはならない。 かかるプログラムと関連ドキュメントについて書かれているインターシステムズ社の標準ライセンス契約に記載されている 範囲を除き、ここに記載された本ドキュメントとソフトウェアプルグラムの複製、使用、廃棄は禁じられている。インターシス テムズ社は、ソフトウェアライセンス契約に記載されている事項以外にかかるソフトウェアプログラムに関する説明と保証を するものではない。さらに、かかるソフトウェアに関する、あるいはかかるソフトウェアの使用から起こるいかなる損失、損害 に対するインターシステムズ社の責任は、ソフトウェアライセンス契約にある事項に制限される。 前述は、そのコンピュータソフトウェアの使用およびそれによって起こるインターシステムズ社の責任の範囲、制限に関する 一般的な概略である。完全な参照情報は、インターシステムズ社の標準ライセンス契約に記され、そのコピーは要望によっ て入手することができる。 インターシステムズ社は、本ドキュメントにある誤りに対する責任を放棄する。また、インターシステムズ社は、独自の裁量 にて事前通知なしに、本ドキュメントに記載された製品および実行に対する代替と変更を行う権利を有する。

Caché および InterSystems Caché、Caché SQL、 Caché ObjectScript および Caché Object は、インターシステムズ社の 商標です。 ここで使われている他の全てのブランドまたは製品名は、各社および各組織の商標または登録商標です。 インターシステムズ社の製品に関するサポートやご質問は、以下にお問い合わせください: InterSystems ワールドワイド カスタマサポート +1 617 621-0700 Tel: +1 617 374-9391 Fax: support@InterSystems.com Email:

(3)

目次

1 Caché SQL 入門... 1 1.1 アーキテクチャ... 2 1.2 機能... 3 1.2.1 SQL-92 準拠 ... 3 1.2.2 拡張機能... 4 1.3 相互運用性... 4 1.3.1 JDBC... 4 1.3.2 ODBC... 5 1.3.3 埋め込み SQL... 5 1.3.4 ダイナミック SQL... 6 1.3.5 Caché SQL ゲートウェイ... 6 2 構成 ... 7 2.1 SQL オプション... 7 2.2 ODBC 構成... 7 2.2.1 ODBC 環境変数およびロギング... 9 2.2.2 Windows クライアント管理... 10 2.2.3 UNIX クライアント管理... 12 2.3 JDBC クライアント構成... 22 3 Caché SQL の基礎... 23 3.1 テーブル ... 23 3.2 クエリ ... 24 3.3 特権 ... 24 3.4 識別子... 24 3.4.1 UNICODE 識別子... 25 3.4.2 区切り識別子... 25 3.4.3 SQL 予約語... 26 3.5 照合 ... 26 3.5.1 インデックス値の照合... 28 3.5.2 従来の照合関数 ... 30 4 テーブルの定義 ... 31 4.1 クラスを使用したテーブルの定義... 31 4.2 DDL を使用したテーブルの定義... 32 4.2.1 埋め込み SQL での DDL の使用... 33 4.2.2 ダイナミック SQL を使用した DDL の実行... 33 4.2.3 コマンド行から DDL スクリプトを実行 ... 34

(4)

5 ビュー... 35 5.1 更新可能なビュー... 35 5.1.1 WITH CHECK オプション... 36 5.2 読み取り専用ビュー ... 37 6 インデックス... 39 6.1 インデックスの定義... 39 6.1.1 クラス定義を使用したインデックスの定義... 39 6.1.2 DDL を使用したインデックスの定義... 40 6.2 標準インデックス... 40 6.2.1 複数のプロパティのインデックス... 40 6.2.2 一意のインデックス ... 41 6.2.3 インデックスでデータを保存 ... 41 6.3 ビットマップ・インデックス ... 42 6.3.1 ビットマップ・インデックス演算... 42 6.3.2 クラス定義を使用したビットマップ・インデックスの定義... 43 6.3.3 DDL を使用したビットマップ・インデックスの定義... 44 6.3.4 ビットマップ・インデックスにおける制限事項... 44 6.3.5 インデックス・タイプの選択... 44 6.4 インデックス構築... 45 6.4.1 システム管理ポータルによるインデックスの構築... 45 6.4.2 プログラミングによるインデックスの構築... 46 7 データベースの問い合わせ... 47 7.1 SELECT 文 ... 47 7.1.1 SELECT リスト... 47 7.1.2 FROM 節... 48 7.1.3 WHERE 節... 48 7.1.4 ORDER BY 節... 48 7.2 JOIN... 49 7.2.1 OUTER JOIN 制限... 49 8 データベースの変更 ... 53 8.1 INSERT 文... 53 8.2 UPDATE 文... 53 8.3 DELETE 文... 53 9 埋め込み SQL... 55 9.1 マクロ・プリプロセッサ ... 55 9.2 構文と使用法... 55 9.2.1 &sql 指示文 ... 55 9.2.2 スキーマ・ネームの解析... 56 9.2.3 リテラル値... 56

(5)

9.2.4 ホスト変数 ... 57 9.2.5 データ形式 ... 57 9.2.6 単純な SQL 文 ... 59 9.2.7 SQL カーソル... 59 9.2.8 SQLCODE 変数とエラー処理... 62 9.2.9 %ROWCOUNT 変数... 62 9.2.10 %ROWID 変数... 62 9.2.11 NULL 処理... 63 10 ダイナミック SQL... 65 10.1 ダイナミック SQL と埋め込み SQL... 65 10.2 %Library.ResultSet クラス... 66 10.2.1 %Library.ResultSet オブジェクトの生成 ... 66 10.2.2 クエリの作成 ... 66 10.2.3 クエリのメタ情報 ... 67 10.2.4 クエリの実行 ... 67 10.2.5 クエリからのデータのフェッチ... 68 10.2.6 クエリのクローズ ... 68 10.3 クエリ・キャッシュ ... 69 11 パフォーマンスの向上 ... 71 11.1 インデックス... 71 11.2 EXTENTSIZE と SELECTIVITY... 71 11.2.1 EXTENTSIZE... 71 11.2.2 SELECTIVITY ... 72 12 外部キー... 75 13 トリガ... 77 13.1 トリガの定義 ... 77 13.2 トリガ・コード ... 78 14 ストアド・プロシージャ... 79 14.1 ストアド・プロシージャの定義 ... 79 14.1.1 クラス定義内でストアド・プロシージャを定義 ... 79 14.1.2 DDL を使用したストアド・プロシージャの定義 ... 80 14.2 ストアド・プロシージャの使用法 ... 81 14.2.1 ストアド関数 ... 81 15 BLOB、CLOB、ストリーム... 83 15.1 DDL を使用した BLOB と CLOB の定義 ... 83

15.2 Caché メソッドでの BLOB と CLOB の使用法... 84

15.3 ODBC からの BLOB と CLOB の使用法... 84

(6)

16 外部テーブル ... 87 17 ユーザ、ロール、特権... 89 17.1 ユーザ ... 89 17.2 ロール... 89 17.3 特権 ... 90 18 特別な機能... 93 18.1 暗黙結合... 93 18.1.1 参照... 93 18.2 構文 ... 95 18.2.1 COUNT(*) と列の追加... 95 18.3 関数と演算子 ... 95 18.3.1 %ID... 95 18.3.2 %STARTSWITH ... 95 18.4 ユーザ定義関数 ... 96 索引 ... 97

(7)

図一覧

Caché ODBC データソース設定ダイアログ... 11 Person テーブル... 42 State ビットマップ・インデックス ... 43 Age ビットマップ・インデックス... 43 複数のインデックスの使用 ... 43

(8)

テーブル一覧

(9)

1

Caché SQL 入門

Caché SQL は、Caché データベースに格納されているデータに対し、徹底した標準リレーショナル・ アクセスを提供します。 Caché SQL には、以下のような利点があります。 • 高度な性能とスケーラビリティ — Caché SQL は、従来のデータベースに比べ、性能、スケーラ ビリティにおいて優れており、ラップトップから高性能のマルチ CPU システムまで、様々なハー ドウェアやオペレーティング・システム上で作動します。

• Caché オブジェクトとの統合 — Caché SQL は、Caché オブジェクトと密接に統合されています。 データへのリレーショナル・アクセス、およびオブジェクト・アクセスの性能を低下させることなく、 両方のアプローチを併用できます。 • メンテナンスの低減 — 従来のリレーショナル・データベースとは異なり、Caché アプリケーション は、運用されたアプリケーションでインデックスの再構築、およびテーブルの圧縮を行う必要が ありません。 • 標準 SQL クエリをサポート — Caché SQL は、SQL-92 標準構文とコマンドをサポートします。 したがって、既存のリレーショナル・アプリケーションを簡単に Caché に移行することができ (特 殊な場合を除く)、Caché のより高度なパフォーマンスと高性能なオブジェクトをご利用いただけ ます。 Caché SQL は、様々な用途に使用できます。 • オブジェクト・ベース・アプリケーションと Web ベース・アプリケーション — Caché オブジェクトの アプリケーションや Caché Server Page アプリケーションで SQL クエリを使用して、検索などの 高性能なデータベース操作を行うことができます。

• オンライン・トランザクション処理 — Caché SQL は挿入や更新で優れた性能を発揮し、また、ト ランザクション処理アプリケーションにおけるクエリのタイプを提供します。

(10)

• ビジネス・インテリジェンスとデータ保存 — Caché の多次元データベース・エンジンとビットマッ プ・インデックス・テクノロジーの組み合わせにより、最高のデータ保存用アプリケーションを提 供します。 • 任意クエリ (問い合わせ) とレポート — Caché SQL に含まれているフル装備の ODBC と JDBC ドライバ を使用して、一般のレポート・ツールやクエリ・ツールに接続できます。 • エンタープライズ・アプリケーションの統合 — Caché SQL ゲートウェイ により、外部のリレーショ ナル・データベースに保存されているデータへの、継続的なアクセスが可能になります。これに より、様々なソースからのデータを、Caché アプリケーション内で簡単に統合できます。 Caché SQL の詳細については、以下を参照してください。 • Caché オブジェクト、およびこれを SQL と相互処理する方法については、"Caché オブジェクト の使用法" の "オブジェクトと SQL" の章を参照してください。 • SQL コマンドや機能の詳細については、"Caché SQL リファレンス" を参照してください。 • Caché システム管理ポータルでは、Caché SQL テーブル、ビュー、ロール、およびユーザを管 理できます。リレーショナル・データを Caché にインポートする際にも使用できます。

1.1 アーキテクチャ

Caché SQL の核となる部分は、以下のようなコンポーネントから成り立ちます。 • 統一データ・ディクショナリ — 一連のクラス定義として保存されている、すべてのメタ情報の集 積する場所。Caché は、統一ディクショナリに保存されるすべての永続クラスに対するリレーショ ナル・アクセス (テーブル) を、自動的に生成します。 • SQL プロセッサとオプティマイザ — SQL クエリの構文を解析し分析する一連のプログラム。こ れは、(高性能コスト・ベース・オプティマイザを使用して) 既存のクエリに最も適した検索方法を 決定し、クエリを実行するコードを生成します。

• Caché SQL サーバ — Caché ODBC と JDBC ドライバとのすべての通信を担う、一連の Caché サーバ・プロセス。また、最も頻繁に使用されるクエリのキャッシュも管理します。同じクエリが何 度も実行される場合、その実行プランは、再度オプティマイザによって処理を行うのではなく、 クエリ・キャッシュから取り出すことができます。

(11)

1.2 機能

Caché SQL には、すべての標準的なリレーショナル機能が装備されています。以下はその概要で す。

• テーブルやビューを定義します (DDL または Data Definition Language)。

• テーブルやビューに対しクエリを実行します (DML または Data Manipulation Language)。 • INSERT、UPDATE、DELETE 操作などの、トランザクションを実行します。並行オペレーション を実行する際、Caché SQL は行レベル・ロックを使用します。 • 効率的にクエリを実行するために、インデックスを定義し使用します。 • ユーザ定義タイプも含め、様々なデータ型に対応します。 • ユーザとロールを定義し、それらに特権を与えます。 • 外部キーや、その他の整合性制約を定義します。 • INSERT、UPDATE、DELETE トリガを定義します。 • ストアド・プロシージャを定義、実行します。 • クライアント・アクセスには ODBC モード、サーバ・ベース・アプリケーション (CSP ページなど) で使用するには表示モードというように、異なる形式でデータを返します。 注釈: インターシステムズは、今後も引き続き Caché SQL の追加機能のサポートを提供します。 もし、このバージョンでサポートされていない機能をご希望の方は、インターシステムズの サポート窓口に、今後の新しいバージョンにその機能が追加されるかどうかなど確認してく ださい。

1.2.1 SQL-92 準拠

Caché SQL は、下記の例外を除き、すべての初級 SQL-92 標準をサポートします。 • テーブル定義に CHECK 制限を別途追加することはできません。 • SERIALIZABLE 分離レベルはサポートされていません。 • SQL 式で算術演算子の優先順位は、SQL-92 標準と異なります。Caché SQL には演算子の優 先順位はなく、算術式は必ず左から右の順番で解析されます。この規則は、Caché ObjectScript でも同様です。例えば、3+3*5=30となります。演算順位を指定するには、括弧を使用します。 例えば、3+(3*5)=18となります。 • 区切り識別子は、大文字と小文字を区別しません。標準では、大文字と小文字を区別する必要 があります。 機能

(12)

• HAVING 節に含まれるサブクエリでは、通常その HAVING 節で “使用可能な” 集合を参照 できますが、この機能はサポートされません。 上記に加え、Caché SQL は下記もサポートしません (これらは、初級 SQL-92 の一部ではありませ ん)。 • OUTER JOINS は、フィールド間の等値条件に基づく必要があります。非等値条件、値域条件、 OR 条件での OUTER JOIN はサポートされません。

OUTER JOIN の制限については、"OUTER JOIN 制約" を参照して下さい。

1.2.2 拡張機能

Caché SQL は、多数の便利な拡張機能をサポートします。これらは、ポスト・リレーショナル・データ ベースである Caché の特長であり、データに対し同時にオブジェクト・アクセスとリレーショナル・アク セスを提供できるという機能に基づきます。 以下は、その拡張機能の例の一部です。 • ユーザ定義のデータ型と機能をサポートします。 • 後続のオブジェクト参照のための特別構文が使用できます。 • サブクラスと継承をサポートします。 • 他のデータベースに保存されている外部テーブルに対するクエリをサポートします。 • 最高の性能を実現するために、テーブルの保存構成を管理する様々なメカニズムを提供しま す。 上記およびその他の機能の詳細は、"特別な機能" のセクションを参照してください。

1.3 相互運用性

Caché SQL は、他のアプリケーションやソフトウェア・ツールをリレーショナルに相互運用する多くの 方法をサポートします。

1.3.1 JDBC

Caché には、標準に対応するレベル 4 (すべて純正 Java コード) JDBC クライアントが含まれていま す。 Caché JDBC ドライバには、以下のような特徴があります。 • 高性能

(13)

• 純正 Java の実装 • UNICODE をサポート • スレッドの安全性 JDBC をサポートするものであれば、あらゆるツール、アプリケーション、開発環境で Caché JDBC をご利用いただけます。互換性について問題が発生した場合やご質問等がございましたら、イン ターシステムズのサポート窓口までお問い合わせください。

1.3.2 ODBC

Caché SQL における C 言語の呼び出しレベルのインタフェースは、ODBC です。他のデータベー ス製品とは異なり、Caché ODBC ドライバはネイティブのドライバであり、他のメーカー独自のインタ フェース上に構築されたものではありません。 Caché ODBC ドライバには、以下のような特徴があります。 • 高性能 • 移植性 • ネイティブ UNICODE をサポート • スレッドの安全性

ODBC をサポートするものであれば、あらゆるツール、アプリケーション、開発環境で Caché ODBC をご利用いただけます。互換性について問題が発生した場合やご質問等がございましたら、イン ターシステムズのサポート窓口までお問い合わせください。

1.3.3 埋め込み SQL

Caché ObjectScript において、Caché SQL は埋め込み SQL をサポートします。つまり、メソッド (あ るいは、その他のコード) 本体の中に SQL 文を置くことができます。

埋め込み SQL は Caché のオブジェクト・アクセスと併せて使用すると、非常に高い性能を発揮でき ます。例えば、以下のメソッドは、既存のSKU コードにより Product のオブジェクト ID を見つけて、 これを使用してメモリ内のオブジェクト・インスタンスを生成します。

ClassMethod FindBySKU(sku As %String) {

&sql(SELECT %ID INTO :id FROM Product WHERE SKU = :sku) If (SQLCODE = 0) {

// ask the product to display details about itself Set product = ##class(Product).%OpenId(id)

Do product.DisplayDetails() }

}

詳細は、"埋め込み SQL" の章を参照してください。

(14)

1.3.4 ダイナミック SQL

Caché は、標準ライブラリの一部として%Library.ResultSet クラスを提供しており、(実行時に定義さ れる) ダイナミック SQL 文を実行するときに使用できます。また、Caché ObjectScript や基本的なメ ソッドで、ダイナミック SQL を使用できます。例えば、以下のメソッドは、購入できるすべての商品を 値段の順番にリストアップします。

ClassMethod ShowByPrice() [ language = basic ] {

rs = New %Library.ResultSet()

rs.Prepare("SELECT SKU, Name FROM MyApp.Product ORDER BY Price") rs.Execute()

While (rs.Next())

PrintLn rs.Data("SKU") & ":" & rs.Data("Name") Wend } 詳細は、"ダイナミック SQL" の章を参照してください。

1.3.5 Caché SQL ゲートウェイ

Caché SQL ゲートウェイを使用すると、外部のリレーショナル・データベース内のテーブルにも、そ れらが Caché にネイティブに保存されているかのようにアクセスできます。 詳細は、"Caché SQL ゲートウェイ" を参照してください。

(15)

2

構成

Caché SQL は Caché インストールの一部として自動的にインストールされます。Caché SQL は、通 常 Caché が構成された後に、構成の追加や設定をする必要はありません。ほとんどの Caché SQL 構成オプションは、DDL オペレーション (DDL の相違を Caché にマップする方法) やクエリ・キャッ シュの管理に対応します。 Windows システムには、 “SQL クライアント専用” のインストール・オプションがあり、Caché のクライ アント・アクセス・コンポーネント (ODBC ドライバ) のみをインストールできます。

2.1 SQL オプション

様々な Caché SQL 構成設定は、システム管理ポータルを使用して表示および変更できます。[シス テム構成]で[詳細設定]を選択します。プル・ダウン・リストの[カテゴリ]から[SQL]を選択します。 これによって SQL 構成オプションが表示されます。

2.2 ODBC 構成

既定では、Caché は標準インストールにより完全に ODBC をインストールします。このセクションで は、ODBC ドライバのセットアップ方法、および構成方法について説明します。ODBC システムの アーキテクチャには、5 つの部分があります。

• クライアント・アプリケーション — Microsoft の ODBC API にしたがって呼び出しを実行するアプ リケーション。ODBC は、クライアントから Data Source Name (DSN) への接続を確立します。こ れは、特定の Caché インストールの特定のネームスペースと、その他の属性を指定するマッピ

(16)

ングです。クライアント・アプリケーションが特定の DSN に接続するには、その DSN は ODBC ドライバ・マネージャに登録する必要があります。

• ODBC ドライバ・マネージャ — ドライバ・マネージャは、ODBC API を使用してアプリケーション からの呼び出しを受信し、これを Caché クライアント・ドライバなどのような、登録済みのクライア ント・ドライバに渡します。また、ドライバ・マネージャは、クライアント・アプリケーションがクライア ント・ドライバと、さらにはデータベース・サーバと通信するために、必要なタスクを実行します。 Windows のドライバ・マネージャは Microsoft により作成され、オペレーティング・システムの一 部として含まれています。UNIX ではその一部を使用できます。 • ODBC クライアント・ドライバ — データベース固有のアプリケーションで、ODBC ドライバ・マネー ジャを通してクライアント・アプリケーションからの呼び出しを受け取り、データベース・サーバと の通信を提供します。また、アプリケーションからの要求があれば、ODBC に関連する様々な データ変換を実行します。 • データベース・サーバ — ODBC クライアント・アプリケーションからの呼び出しを最終的に受け 取る、実際のデータベース。これは、呼び出し元である ODBC クライアント・ドライバと同じマシ ン、または異なるマシンの、いずれに置いてもかまいません。各 Caché データベースは、複数 の DSN をサポートすることができ、それぞれが複数の接続をサポートします。 • 初期化ファイル — ドライバ・マネージャの一連の構成情報。オペレーティング・システムによって は、クライアント・ドライバ情報を含むものもあります。UNIX では、odbc.ini という実際のファイル で、Windows では、レジストリ・エントリです。 注釈: 特定のベンダのデータベースでは、ベンダからそのプラットフォーム専用のバージョンの ODBC ドライバが提供されている場合があります。例えば、Oracle からは、Oracle データ ベースを Windows で使用するための専用の ODBC ドライバが提供されています。場合に よっては、このようなドライバを使用するのが最適です。ベンダのドライバは、データベース の機能を最大限に活用してパフォーマンスの最適化または信頼性の向上を実現している ためです。 接続は、以下のように確立されます。 1. クライアント・アプリケーションには、ODBC 呼び出しが含まれ、特定の DSN へ接続しようと試み ます。クライアント・アプリケーションにリンクされている ODBC ドライバ・マネージャが、その呼び 出しを受け取ります。

2. ODBC ドライバ・マネージャは、Caché ODBC 初期化ファイルを読み取り、Caché ODBC クライ アント・ドライバの位置を取得し、クライアント・ドライバをメモリにロードします。

3. Caché クライアント・ドライバがメモリにロードされると、Caché ODBC 初期化ファイルを使用して DSN への接続情報の位置を確認します。接続情報には、Caché が稼動しているホスト、Caché インストールの名称、およびデータを含むネームスペースなどの情報が含まれています。クライ アント・ドライバは、DSN と初期化ファイルから取得したその他の情報を使用して、指定された Caché インストールとネームスペースに接続します。

(17)

4. 接続が確立した後、クライアント・ドライバは Caché データベース・サーバとの通信を管理しま す。

2.2.1 ODBC 環境変数およびロギング

このセクションでは、ODBC 環境変数について説明します。 • CACHEODBCDEFTIMEOUT • CACHEODBCHEADER • CACHEODBCPID • CACHEODBCTRACE(UNIX のみ) • CACHEODBCTRACEFILE Windows の環境変数を設定するには、Windows の[コントロール パネル]から[システム]アイコン を選択し、[詳細]タブを選択します。このタブ内の[環境変数]のセクションで、実行するタスクによっ て、[新規]、[編集]、または[削除]を選択します。

Bourne または Korn シェル上の UNIX 環境変数を設定するには、以下のコマンドを使用します。

VARIABLE=value export VARIABLE

C シェル上の UNIX 環境変数を設定するには、以下のコマンドを使用します。

setenv VARIABLE value set VARIABLE=value UNIX で環境変数を停止するには、unset を実行するか、これを 0 に設定します。この値を最初に 設定していなければ、無効のままになります。

2.2.1.1 CACHEODBCDEFTIMEOUT

この変数により、ログインの既定のタイムアウトの有効時間を指定できます。この変数の単位は秒で す。

2.2.1.2 CACHEODBCHEADER

このブーリアン変数は、ドライバがログ・ファイルにヘッダ情報を書くように指定します。ヘッダ情報に は、ビルドのバージョン、日付、時刻が含まれ、ドライバがロードされたときに記入されます。値が 1 の場合、ヘッダ作成がオンになり、0 の場合オフになります。既定では、ヘッダの作成はオフです。 ODBC 構成

(18)

2.2.1.3 CACHEODBCPID

このブーリアン変数により、ログ・ファイル名にプロセス ID 番号を自動的に付けることができます。値 が 1 の場合は番号が付き、0 の場合は付きません。既定では、番号は付きません。 CACHEODBCPID が有効であり、ベースのログ・ファイルがCacheODBC.log で、現在使用してい るディレクトリに属している場合、ID が 21933 のプロセスは、 “CacheODBC.log.21933” のログ・ファ イルを生成します。

CACHEODBCPID はCACHEODBCTRACEFILEと相互に作用します。CACHEODBCTRACEFILE を使用して、ログ・ファイルのベース・ファイル名を (例えばC:/home/mylogs/mylog.txt に) 設定し て CACHEODBCPID を有効にする場合、生成されたログ・ファイルの名前は C:/home/mylogs/mylog.txt.21965 のような形式になります。

2.2.1.4 CACHEODBCTRACE (UNIX のみ)

このブーリアン変数は、クライアント・ドライバのロギングを有効にします。このファイルの既定名は、 CacheODBC.log です。Windows では、クライアント・ドライバのロギングを有効にするには、DSN セッ トアップ・ダイアログで[ODBC ログ]のチェック・ボックスをチェックします。 UNIX でドライバ・マネージャのロギングを有効にするには、初期化ファイルの Trace エントリを設定 します。Windows では、ODBC データ・ソース・アドミニストレータ・ダイアログを使用します。

2.2.1.5 CACHEODBCTRACEFILE

この変数は、トレース・ファイルの名前と位置を指定します。これは、一意のディレクトリにトレース・ ファイルを置き、このファイルに一意の名前を与えるときに便利です。トレース・ファイルが生成され る既定の位置は、UNIX では現在のディレクトリで、Windows ではC:/WinNT または C:/Windows で す。

2.2.2 Windows クライアント管理

Windows で実行できるタスクは、以下の通りです。 • クライアント・ドライバ構成 • ドライバ・マネージャ・ロギングを有効にする

2.2.2.1 Windows クライアント・ドライバ構成

[Caché ODBC データソース設定]ダイアログを使用して、ODBC クライアントを構成します。これに

は、Windows の[コントロール パネル]または[管理ツール]のサブパネルで、[データ・ソース (ODBC)] のアイコンをクリックします。

(19)

Caché ODBC データソース設定ダイアログ

[InterSystems Caché ODBC データソース設定]ダイアログを使用して、特定の Caché ODBC デー タ・ソースを構成します。その後、このデータ・ソースを使用して、ODBC 認識アプリケーション (開発 ツールやレポート・ライターなど) から Caché への ODBC 接続を作成します。このダイアログの要素 は、ODBC 初期化ファイルのヘッダ・セクションの要素と類似しています。 [データソース]ダイアログ内のフィールドは、以下の通りです。特記がない場合は、必須項目です。 • [名前]— DSN の名前 • [説明]— DSN の説明 (オプション) • [ホスト(IPアドレス)]— DSN の IP アドレス。 “127.0.0.1” のように、ドットで区切られた 10 進法 の数字、あるいは 4 個の数字で表します。 • [ポート]— DSN に接続するポート。Caché への接続ポートの既定は 1972 です。 • [Caché ネームスペース]— DSN のネームスペース • [ユーザ名]— DSN にログインするためのユーザ名。既定は、 “_SYSTEM” で、大文字と小文 字を区別しません (オプション)。 • [パスワード]— UID エントリにより指定されたアカウントのパスワード。SYSTEM のユーザ名に 対するパスワードは “sys” で、大文字と小文字を区別しません (オプション)。 • [DBC ログ]— チェックが付いている場合は、ODBC クライアント・ドライバの動作のログ・ファイ ルを作成します。このログは、問題が発生したときに利用します。これをオンにすると ODBC の 動作速度が著しく低下するため、通常の運用時にはチェックを付けません。UNIX でクライアン ト・ドライバのロギングを有効にするには、ODBCTRACE変数を使用します。ドライバ・マネー ジャのロギングを実行するには、Windows では有効にし、UNIX では初期化ファイルを構成しま す。 ODBC 構成

(20)

• [スタティック・カーソル]— チェックが付いている場合は、Caché ODBC ドライバのスタティック・ カーソル・サポートを有効にします。チェックが付いていない場合は、ODBC カーソル・ライブラ リのカーソル・サポートを使用します。通常、ODBC カーソル・ライブラリを使用しない特別な理 由がない限りは、チェックを付けません。 • [クエリタイムアウト無効]— チェックが付いている場合は、ODBC ドライバが ODBC クエリ・タイ ムアウトの設定値を無視します。 ODBC クエリ・タイムアウト設定は、特定の動作が完了するまでにクライアントが待機する時間を 指定します。動作が指定された時間内に完了しなかった場合は、自動的にキャンセルされま す。ODBC API により、このタイムアウト値をプログラムによって設定することもできますが、ODBC アプリケーションによっては、この値は固定されています。ご使用の ODBC アプリケーションで タイムアウト値を設定できず、そのタイムアウト値が小さすぎる場合は、クエリ・タイムアウトを無効 にするオプションにより、タイムアウト値を無効にします。

• [Unicode SQL Types]— チェックが付いている場合、文字列データの Unicode SQL タイプ ( “SQL_WVARCHAR (-9) SQLType” ) のレポート機能をオンにします。これにより、Microsoft Office 2000 および Visual Basic アプリケーションはマルチバイトのデータを保持するために、 適切なサイズのバッファを割り当てます。中国語、ヘブライ語、日本語、韓国語などのロケール で、マルチバイトの文字セットを使用する場合にのみ、この機能が関係します。シングル・バイト の文字セットのデータのみを使用する場合は、ここにチェックを付けないでください。 このチェック・ボックスがチェックされている場合、SQLBindParameter を使用した際に、アプリ ケーションでは Microsoft ドライバ・マネージャの “SQL データ型が範囲を越えています” と いうエラーが発生する可能性があります。 ODBC データ・ソースを構成した後、[テスト接続]ボタンでご使用のデータ・ソースが正常に作動し ているかどうかを確認してください。

2.2.2.2 Windows でドライバ・マネージャのロギングを有効にする

Windows でドライバ・マネージャのロギングを有効にするには、[ODBC データ・ソース・アドミニスト レータ]ダイアログで、[トレース]パネルの[トレースの開始]ボタンをクリックします。このダイアログ は、Windows のバージョンによって[コントロール パネル]の[管理ツール]サブパネル、または [ODBC データ・ソース]からアクセスできます。[ログ・ファイルのパス]フィールドで指定されたファイ ルは、トレース・ファイルの位置を確認します。 UNIX でドライバ・マネージャのロギングを有効にするには、初期化ファイルの Trace エントリを使用 します。クライアント・ドライバのロギングを有効にする場合、Windows では[ODBC データソース設 定]の[ODBC ログ]チェック・ボックスを使用し、UNIX ではCACHEODBCTRACE環境変数を使 用します。

2.2.3 UNIX クライアント管理

(21)

• サポート対象ドライバ、およびプラットフォーム

• フル・インストールの一部として Caché UNIX ODBC クライアント・ドライバをインストール、構成 する

• スタンドアロンの Caché UNIX ODBC クライアント・ドライバをインストール、構成する

• ODBC 初期化ファイル “odbc.ini” • UNIX 用 ODBC クライアント・ドライバのテスト • 共有オブジェクトに関するトラブルシューティング • select.c のコンパイル、およびリンク • iODBC ドライバのインストールと構成 • Apache およびドライバ・マネージャで、libcacheodbc.so の PHP を構成する

2.2.3.1 サポート対象ドライバ、およびプラットフォーム

サポート対象プラットフォームのリストは、"Caché サポート対象プラットフォーム" の "サポート対象 サーバ・プラットフォーム" のセクションを参照してください。

Caché ODBC ドライバを使用するには、UNIX 上に ODBC ドライバ・マネージャが必要です。Caché ODBC ドライバと使用できる UNIX ODBC ドライバ・マネージャのサプライヤは、以下の通りです。 • iODBC — オープン・ソース・コードを持つフリーウェア。UNIX Caché にインストールされている

既定のドライバです。

• unixODBC — オープン・ソース・コードを持つフリーウェア。unixODBC は Unicode ドライバをサ ポートし、UNIX の多数のバージョンで既定として使用するドライバです。unixODBC Unicode ドライバ (libcacheodbcw) の使用に関する情報については、インターシステムズのサポート窓口 までお問い合わせください。

インターシステムズは、現在すべての UNIX プラットフォームで、libcacheodbc ライブラリを通して ODBC narrow インタフェースをサポートしています。Caché には、iODBC ドライバ・マネージャが事 前に組み込まれています。

2.2.3.2 フル・インストールの一部として Caché UNIX ODBC クライアント・ドライバをインス

トール、構成する

このセクションでは、完全な Caché インストールの一部として、ODBC を使用するタスクについて説 明します。スタンドアロン・クライアント・インストールを実行することもできます。

1. Caché のインストール中に、以下のようなプロンプトが表示されます。

Do you want to install ODBC and SQL Gateway <Yes>?

(22)

“Yes” と回答します (既定)。これにより、使用しているマシンに適切な ODBC ソフトウェアを確 実にインストールできます。

2. インストールの後、ccontrol コマンドで Caché を起動します。

# ccontrol start <configname>

configname は、インストール中に選択した構成名です。

インストールされた項目

インストールにより、以下のコンポーネントがcachesys に配置されます。 • ./bin/libcacheodbc.so — Caché ODBC ドライバ

• ./bin/libcacheodbcw.so — C++ バインディングで使用する Unicode Caché ODBC ドライバ • ./bin/stlport_gcc.so — Linux ストリーム・サポート・ライブラリ

• ./bin/cgate.so — Caché から他の ODBC ドライバに接続するために SQLGateway が生成した もの • ./mgr/cacheodbc.ini — サンプルの ODBC 初期化ファイル。サンプルのスクリプト、および SQLGateway が他の DSN への接続するために Caché 内部で使用します。 • ./dev/odbc/doc/ODBCUserguide.txt — このドキュメント • ./dev/odbc/redist/iodbc — iODBC 共有オブジェクト、およびインクルード・ファイル • ./dev/odbc/redist/unixodbc—unixODBC 共有オブジェクト、およびインクルード・ファイル • ./dev/odbc/samples/select/*

- select.c — SELECT 文の入力を促すサンプルの ODBC プログラム

- select— iODBC ドライバ・マネージャにリンクされているサンプルの ODBC プログラムこの プログラムを実行するには、./select dsnnameをタイプし、SELECT 文を入力して、稼

動している Caché に接続します。

./select samples

SELECT * from Sample.Person

- select.sh — シェル・スクリプト。これは、(インストールの一部として生成された mgr ディレク トリ内に)cacheodbc.ini ファイルを見つけるのに必要な環境変数を設定し、libiodbc.so を 見つける検索パス (AIX では LD_LIBRARY_PATHまたは LIBPATH) を設定し、

Sample.Person に対して、前述の SELECT 文を実行します。

• ./dev/odbc/samples/sqlgateway/*

- gatewaytest.sh — “SAMPLES” ネームスペースを使用して、SQL ゲートウェイの接続をテ ストするスクリプト

(23)

- SQLGatewayTest.ro — iODBC または Caché ODBC ドライバ libcacheodbc.so を使用し て、Caché “SAMPLES” ネームスペースへのコールアウトを実行するルーチン

2.2.3.3 スタンドアロンの Caché UNIX ODBC クライアント・ドライバをインストール、構成する

スタンドアロンのクライアント・インストールを作成する手順は、以下の通りです。 1. クライアントをインストールするディレクトリ (/usr/cacheodbc/ など) を作成します。 # mkdir /usr/cacheodbc 2. クライアント・ドライバ用のファイルを含む圧縮された tar ファイルを、マウントされた CD ドライブ から、先ほど形式のコマンドで作成したディレクトリにコピーします。 # cp <CD-dir>/dist/ODBC/ODBC-<release-code>-<platform>.tar.Z <client-install-dir>

CD-dir は Caché がマウントされた場所、release-code および platform はリリース限定、あるい はオペレーティング・システム限定のコード (次の手順参照)、client-install-dir は前の手順で作 成したクライアントをインストールするディレクトリです。 3. クライアントをインストールしているディレクトリに行き、.tar ファイルを手動で解凍します。.tar ファ イルは、CD で cinstall プログラムと同じディレクトリである、./dist/ODBC/ ディレクトリにありま す。 .tar ファイルを手動で解凍する手順は、以下の通りです。 # cd <client-install-dir> # gunzip ODBC-<release-code>-<platform>.tar.Z # tar xvf ODBC-<release-code>-<platform>.tar

release-code はリリース限定のコード (Caché のバージョンやリリースによって異なります)、platform はドライバのオペレーティング・システムを指定します。platform の値は、以下の通りです。 • decunix5—DECUnix Tru64

• decunix5clu—DECUnix Tru64 for clusters • hp11—HP/UX (32 bit)

• hp64—HP/UX (64 bit)

• linux—Linux, all supported platforms • usparc—Solaris

• ppc—AIX (32 bit) • ppc64—AIX (64 bit)

この処理により、bin、dev ディレクトリが作成され、ファイルのセットがインストールされます。

(24)

4. 上記で作成したディレクトリにある、ODBCInstall プログラムを実行します。このプログラムは、い くつかのサンプルのスクリプトを作成し、mgr ディレクトリに cacheodbc.ini を構成します。例え ば、以下のようになります。 # pwd /usr/cacheodbc # ./ODBCInstall 5. インストールの初期化ファイルを構成します。 6. インストールをテストします。

2.2.3.4 ODBC 初期化ファイル

iODBC ドライバ・マネージャは、初期化ファイルを使用して、クライアント・アプリケーションと ODBC ドライバの間の接続を確立します。このファイルが、接続に必要な ODBC ドライバへのパスも含めて 情報を提供し、ドライバ・マネージャが利用できる DSN の位置を確認して接続します。UNIX プラッ トフォームに接続する際に、Caché ODBC ドライバ、libcacheodbc.so は、初期化ファイルを参照し て、DSN オプション (タイムアウト有効時間など) を指定します。ファイル名には、どのような名前でも 使用できますが、通常ユーザ個人のディレクトリにある場合は.odbc.ini、ODBC 指定のディレクトリ にある場合はodbc.ini と呼ばれます。また、Caché 指定のバージョンでは、/<cache-install-dir>/mgr ディレクトリにあり、cacheodbc.ini と呼ばれます。

このファイルを見つけるために、Caché ODBC ドライバは iODBC リリース 3.0.6. の検索順と同様 に、以下の場所を (以下の順番通りに) 検索します。

1. ODBCINI 環境変数が定義されている場合、これに指定されているファイル。定義されている場 合は、この変数は以下のようにパスとファイルを指定します。

ODBCINI=/usr/cachesys/cacheodbc.ini export ODBCINI

2. $HOME が定義されており.odbc.ini が存在する場合、ユーザの $HOME 変数に指定されたディ レクトリの.odbc.ini ファイル。

3. $HOME が定義されていない場合、passwd ファイル内に指定された “home” ディレクトリの .odbc.ini ファイル。 4. システム全体に、SYSODBCINI 環境変数が定義されている場合、これに指定されているファイ ル。ODBCINI と同様に、定義されている場合、この変数は以下のようにパスとファイルを指定し ます。 SYSODBCINI=/usr/cachesys/cacheodbc.ini export SYSODBCINI

5. odbc.ini ファイルは、iODBC ドライバ・マネージャ (/etc/) を構築する既定のディレクトリにある ため、完全なパス、およびファイル名は/etc/odbc.ini です。

(25)

iODBC 3.0.6 ドライバ・マネージャは、Caché のリリースに、非スレッドの共有オブジェクトとして組み 込まれています。ドライバ・マネージャは、SQL ゲートウェイ (cgate.so) に、ODBC をテストするため に組み込まれた select プログラムと併せて使用します。ここでは、インストール中に構成されるmgr ディレクトリのcacheodbc.ini を使用して、サンプルやユーザ・ネームスペースにアクセスします。Caché は、このファイルへのアクセスに ODBCINI 環境変数を設定しているので、cgate.so および iODBC と併用するための DSN を追加するには、cacheodbc.ini を変更します。異なる odbc.ini ファイルを 使用する場合は、cacheodbc.ini ファイルを削除するか、名前を変更して、ドライバ・マネージャが $HOME または/etc/odbc.ini を検索できるようにします。

以下は、初期化ファイルのサンプルです。

[ODBC Data Sources] samples=samples [samples]

Driver = /usr/cachesys/bin/libcacheodbc.so Description = Cache' 5.x ODBC driver

Host = localhost Namespace = SAMPLES UID = _SYSTEM Password = sys Port = 1972 Protocol = TCP Query Timeout = 1 Static Cursors = 0 Trace = off TraceFile = iodbctrace.log [Default] Driver = /usr/cachesys/bin/libcacheodbc.so このファイルには、以下の変数が含まれます。

• ODBC Driver Sources — ファイルに対するすべての DSN のリスト。各エントリは

“DSNName=SectionHeading” という形式で表します。DSNName はクライアント・アプリケーショ ンが指定する名前で、SectionHeading はこのファイルの DSN 情報を表す見出しを指定します。 • Driver— クライアント・ドライバ・ファイルlibcacheodbc.so の場所。 • Description— DSN の説明 (オプション)。 • Host— DSN の IP アドレス。 “127.0.0.1” のように、ドットで区切られた 10 進法の数字、あるい は 4 個の数字で表します。 • Namespace— DSN のネームスペース。 • UID— DSN にログインするためのユーザ名。既定は、 “_SYSTEM” で、大文字と小文字を区別 しません (オプション)。

• Password— UID エントリにより指定されたアカウントのパスワード。SYSTEM のユーザ名に対す るパスワードは “sys” で、大文字と小文字を区別しません (オプション)。

• Port— DSN に接続するポート。Caché への接続ポートの既定は 1972 です。 • Protocol— DSN に接続するためのプロトコル。Caché は、常に TCP です。

(26)

• Query Timeout— 1 の場合は、ODBC ドライバが ODBC クエリ・タイムアウトの設定値を無視し ます。

ODBC クエリ・タイムアウト設定は、特定の動作が完了するまでにクライアントが待機する時間を 指定します。動作が指定された時間内に完了しなかった場合は、自動的にキャンセルされま す。ODBC API により、このタイムアウト値をプログラムによって設定することもできますが、ODBC アプリケーションによっては、この値は固定されています。ご使用の ODBC アプリケーションで タイムアウト値を設定できず、そのタイムアウト値が小さすぎる場合は、クエリ・タイムアウトを無効 にするオプションにより、タイムアウト値を無効にします。

• Static Cursors— 1 の場合は、Caché ODBC ドライバのスタティック・カーソル・サポートを有効に します。0 の場合は、ODBC カーソル・ライブラリのカーソル・サポートを使用します。通常、ODBC カーソル・ライブラリを使用しない特別な理由がない限り、このフラグはオフ (0) です。 • Trace— ドライバ・マネージャがロギングを実行するか ( “オン” ) 否か ( “オフ” ) を指定します。 既定はオフです。クライアント・ドライバ自体のロギングを有効にするには、CACHEODBCTRACE 環境変数を使用します (Windows で、ドライバ・マネージャのロギングを有効にするには、ODBC データ・ソース・アドミニストレータ・ダイアログの[トレース]パネルを使用し、クライアント・ドライ バのロギングを有効にするには、ODBC データ・ソース・アドミニストレータの DSN 構成画面の [ODBC ログ] チェック・ボックスをチェックします)。 • TraceFile— Trace エントリによりロギングが有効になっている場合、ドライバ・マネージャのログ・ ファイルの場所を指定します。

2.2.3.5 UNIX 用 Caché ODBC クライアント・ドライバのテスト

このセクションでは、UNIX ODBC ドライバのテスト方法を説明します。

1. クライアントが確実にデータを読めるようにするため、select プログラムを実行します。

# cd <cache-install-dir>/dev/odbc/samples/select # ./select.sh

select.sh スクリプトは、キットと共にインストールされた select プログラムを呼び出し、特定の DSN ( “SAMPLES” ) を select プログラムに供給します。select プログラムは、iODBC ドライバ ・マネージャ (libiodbc.so) にリンクされています。ドライバ・マネージャは Caché 初期化ファイル (<cache-install-dir>/mgr/cacheodbc.ini) を読み取り、 “SAMPLES” DSN への接続情報を取 得します。ドライバ・マネージャは、Caché ODBC クライアント・ドライバの位置を確定し、これをメ モリにロードします。その後、クライアント・ドライバはポート 1972 への TCP/IP 接続を確立し、 Caché 初期化ファイルの DSN 情報を使用して、Caché “SAMPLES” ネームスペースに接続 されます。一旦接続が確立されると、クライアント・アプリケーションは Caché データベースに対 し、SQL select 文を実行します。その、 “SELECT * from Sample.Person WHERE ID < 11” と いう文は、 “SAMPLES” ネームスペースのSample.Person テーブルの最初の 10 行を取得し ます。アプリケーションの ODBC 呼び出しについては、"select.c" を参照して下さい。 2. 完全な Caché インストールの一部 (スタンドアロンではないクライアント) のクライアント・ドライバ

(27)

./sqlgateway/gatewaytest.sh

前述の手順と同じディレクトリを使用します。

gatewaytest.sh スクリプトは、Caché セッションを開始し、 “SAMPLES” ネームスペースの SQLGatewayTest ルーチンを実行します。その後、このアプリケーション・ルーチンは、cgate.so という共有オブジェクトをロードします。この共有オブジェクトは、iODBC ドライバ・マネージャに リンクされています。前述の例のように、ドライバ・マネージャは Caché 初期化ファイルに含まれ る情報を使用してクライアント・ドライバをロードします。その後、クライアント・ドライバはポート 1972 への TCP/IP 接続を確立し、Caché 初期化ファイルの DSN 情報を使用して、Caché “SAMPLES” ネームスペースに接続されます。アプリケーション・ルーチンは、上記と同じクエリ を実行します。

この例と、前述の単純な select の例の相違点は、この例では、最初の呼び出しを行う Caché プロセスが、クライアント・アプリケーションである点です。通常、Caché からのゲートウェイ呼び 出しは、他のベンダのデータベースの DSN を呼び出します。

select.sh および gatewaytest.sh スクリプトは、Caché ログイン・モードと非認証モード、および最小 または通常のセキュリティ・インストールで機能するように設計されています。独自の呼び出しを生成 するには、必要に応じて変更するコードに対するこれらのプロジェクトのファイルの内容を、検証して ください。

2.2.3.6 共有オブジェクト依存関係に関するトラブルシューティング

他の共有オブジェクトの依存関係を有効にし、問題を修正するプロセスは以下の通りです。 1. 実行、あるいは共有オブジェクトに対して ldd コマンドを使用します。 # ldd <cache-install-dir>/bin/libcacheodbc.so 依存関係が見つからなかった場合、ldd は以下のようなエラーを発生します。

libstlport_gcc.so => not found

2. エラーが発生しない場合は、すべての依存関係は有効です。エラーが発生した場合は、以下 のコマンドを実行して、現在のディレクトリ内を見るために共有オブジェクト・ローダを強制しま す。 # sh # cd <cache-install-dir>/bin # LD_LIBRARY_PATH=`pwd`:$LD_LIBRARY_PATH # export LD_LIBRARY_PATH sh コマンドは、Bourne シェルを起動し、cd コマンドは適切なディレクトリに変更し、export コマ ンドは共有オブジェクトを検索するパスを設定します。 3. 現在のディレクトリにパスを追加した後、再度 ldd を実行して、欠けている依存関係がないかど うかを確認します。共有オブジェクトがひとつも見つからない場合は、ODBC ドライバと同じディ レクトリにそれらを追加して下さい。 ODBC 構成

(28)

4. 共有オブジェクトへ永続的にアクセスできるようにするには、/usr/lib または /usr/local/lib (ご 使用のオペレーティング・システムにより異なります) に共有オブジェクトをコピーします。どちら のディレクトリが適切であるか、または Linux の ldconfig コマンドへの登録などの、特別なコマ ンドがあるか否かを判断するには、オペレーティング・システムのマニュアルを参照してください。

2.2.3.7 select.c のコンパイル、およびリンク

select.c サンプル・プログラムをコンパイルし、リンクするためには、以下を実行します。 1. select.c ファイルを含むディレクトリである <cachesys>/dev/odbc/samples/select に行きます。 2. UNIX コンパイラ cc を使用して、プログラムをコンパイルします。このとき、インクルード・ファイル を確実に含むようにします。既定の Caché インストールでは、コマンドは以下の通りです。 # cc -c select.c -I../../redist/iodbc/include 3. cc を使用して、ファイルをリンクします。必要なライブラリにリンクしていることを確認します。既 定のインストールでは、コマンドは以下の通りです。

# cc -o select select.o -L../../redist/iodbc -ldl -liodbc

iODBC のカスタム・インストールに対しても、コンパイルしリンクします。例えば、/usr/local にインス トールされている場合、コマンドは以下の通りです。

# cc -c select.c -I/usr/local/iodbc/include

# cc -o select select.o -L/usr/local/iodbc/lib -ldl -liodbc

2.2.3.8 iODBC ドライバのインストールと構成

既定では、各 Caché インストールには iODBC ドライバ・マネージャ (v. 3.0.6) が含まれています。 これは、シングル・スレッドの実行ファイルとして<cache-install-dir>/bin/libiodbc.so あるいは libiodbc.sl に組み込まれています。これは、インストール時に実行するように組み込まれています。 カスタム化された条件のもとで運用するために、独自の iODBC ドライバ・マネージャを構築する場 合、そのプロセスは以下の通りです。iODBC 実行ファイルおよびインクルード・ファイルは、すべて のビルドで<cache-install-dir>/dev/odbc/redist/iodbc/ ディレクトリにあります。これらのディレク トリを使用してアプリケーションを構築するには、LD_LIBRARY_PATH (AIX では LIBPATH) とインク ルード・パスを設定する必要があります。

注釈: 以下の参照は、その一例です。正確なバージョン番号、インストール・ガイド、およびリリー ス・ノートについては、iODBC のマニュアルを確認してください。

iODBC ドライバ・マネージャ構築のプロセスは、以下の通りです。 1. iODBC Driver Manager をダウンロードします。

(29)

# gunzip /tmp/libiodbc-3.0.6.tar.gz # tar xvf libiodbc-3.0.6.tar

3. インストール・ディレクトリでは、iODBC ソース・コードを構成します。

# cd /tmp/libiodbc-3.0.6

# ./configure --prefix=/usr/local --with-iodbc-inidir=/etc

これは、/usr/local の既定のインストール・ディレクトリ、および /etc の既定の初期化ディレクト リに iODBC を構成します。 4. make コマンドでパッケージをコンパイルします。 # make 5. オプションで、以下のように iODBC 付属のセルフ・テストを実行することもできます。 # make check 6. テスト・ツール、サンプル、共有オブジェクト、データ・ファイル、およびドキュメントをインストール します。 # make install

2.2.3.9 Apache およびドライバ・マネージャで、libcacheodbc.so の PHP を構成する

Caché の ODBC 機能は PHP (PHP : Hypertext Processor) と組み合わせて使用できます。PHP は、動的に生成されるページを作成するスクリプト言語です。そのプロセスは、以下の通りです。 1. インストールを実行するマシンで、ルート特権を取得します。 2. iODBC あるいは unixODBC ドライバ・マネージャをインストールします。 • iODBC では、キットをダウンロードし、標準インストールおよび構成を実行し、その後 PHP と使用するドライバ・マネージャの構成 を実行します。 既定の PHP 構成のセキュリティ保護のため、iODBC PHP の例では、LD_LIBRARY_PATH (AIX では LIBPATH) は set を取得しない点に注意してください。また、LD_LIBRARY_PATH を使用しないでこれを登録するには、libiodbc.so を /usr/lib にコピーし、ldconfig を実行し ます。 • unixODBC では、ソース・キットをダウンロードしてインストールし、PHP と使用するために構 成します。unixODBC の使用法は、iODBC の説明を参照してください。 3. PHP ソース・キット をダウンロードし、解凍します。 4. Apache HTTP サーバ・ソース・キットをダウンロードし、解凍します。 5. PHP を構築し、インストールします。 6. Apache HTTP サーバを構築し、インストール後、起動します。 ODBC 構成

(30)

7. Apache ルート・ディレクトリのinfo.php を証して PHP と Web サーバをテストします。Apache ルー ト・ディレクトリは、Apache 構成ファイルで指定されています (通常httpd.conf)。この URL は、 http://127.0.0.1/info.php です。

8. $HOME 環境変数が定義されていない場合、Apache Web サーバの方が適切に機能するた め、Caché 特有の初期化ファイル、cacheodbc.ini を /etc/odbc.ini にコピーします。 9. 基本テストの手順で、libcacheodbc.so ドライバを構成し、テストします。

10. Caché ODBC キットをsample.php ファイルから Apache ルート・ディレクトリ (info.php が属する ディレクトリ) にコピーし、使用しているマシンの Caché の位置に合わせます。その後、sample.php プログラムを実行します。このプログラムは、ブラウザでhttp://127.0.0.1/sample.php を指すこ とにより、Caché “SAMPLES” ネームスペースを使用します。

2.3 JDBC クライアント構成

JDBC のクライアントを構成するには、以下の手順に従ってください。 1. Caché JDBC ドライバをインストールします (<cachesys>/dev/java/lib/CacheDB.jar ファイル内 で、Caché が自動的にインストールします)。 2. この.jar を参照するために、CLASSPATH 環境変数を設定します。 詳細は、"Caché での Java の使用法" の "インストールと構成" を参照してください。

(31)

3

Caché SQL の基礎

このドキュメントでは、ユーザが SQL についてある程度の知識があるという前提で説明しています。 このドキュメントは、完全な SQL マニュアルでも SQL チュートリアルでもありません。SQL の基本に ついて学ぶ場合は、オンラインや技術系の書店などで入手できる文献を参照してください。 このドキュメントでは、Caché SQL の特徴の概要について、特に SQL 標準では取り上げられていな いものや Caché の統一データ・アーキテクチャについて説明しています。

3.1 テーブル

Caché SQL では、データはテーブル内に存在します。各テーブルには、多数の列が定義されます。 各テーブルには、0 行以上のデータ値が含まれます。 テーブルには、基本テーブル (データを含むテーブルで、通常は単にテーブル呼ばれます) とビュー (1 つまたは複数のテーブルに基づいた論理ビューを表します) という、2 種類の基本となるタイプが あります。 テーブルを定義する方法の詳細は、"テーブルの定義" を参照してください。 ビューを定義する方法の詳細は、"ビューの定義" を参照してください。 テーブルに対してより効率的なクエリを作るには、テーブルにインデックスを定義します。 テーブルに外部キーとトリガを定義して、参照整合性を強制できます。

(32)

3.2 クエリ

Caché SQL 内では、クエリによってテーブルのデータを見たり、変更したりできます。大別すると、ク エリにはデータの検索 (SELECT 文) とデータの変更 (INSERT 文、UPDATE 文、DELETE 文) の 2 種類があります。

SQL クエリは、様々な方法で使用できます。

• Caché ObjectScript で埋め込み SQLを使用できます。

• Caché ObjectScript または Basic で、ダイナミック SQLを使用できます。

• 他の様々な環境から ODBC インタフェースまたは JDBC インタフェースを使用できます。

クエリは、Caché オブジェクト、もしくは Caché ObjectScript ルーチン の一部です。

3.3 特権

Caché SQL では、特権によりテーブルやビューなどへのアクセスを制限できます。一連のユーザや ロールを定義し、それぞれに対し (読む、書くなどの) 特権を定義できます。 ロールや特権の詳細については、"ユーザ、ロール、特権" を参照してください。

3.4 識別子

SQL 識別子とは、テーブル、列、ストアド・プロシージャ、トリガなどの SQL エンティティの名前です。 SQL 識別子の先頭文字には、以下を使用する必要があります。

• 文字。UNICODE システム上では、UNICODE 文字を使用します (Caché ObjectScript の $ZNAME 関数は、その文字に対し TRUE を返します)。 • _ • % 識別子の残りの文字は、0 または以下で構成されます。 • 文字 (UNICODE 文字を含む) • 数字 • _

(33)

• @ • # • $ 通常の識別子には、SQL 予約語は使用しません。SQL 文の中で SQL 予約語を識別子として使用 する場合は、必ず区切り識別子で表示します。 Caché ObjectScript の二項モジュロ演算子 (#) は、オペランドと演算子の間にスペースを入れた場 合のみ使用できます。 NumericField # 10 上記は、有効ですが、 NumericField#10 上記は、通常の識別子として処理されます。 上記のルールに反する識別子は、SQL 文の中で区切り識別子として表示する必要があります。 既定では、SQL エンティティの名前は、対応するクラス定義のエンティティの名前と同じです。異な る SQL 名を付ける場合は、使用しているクラス定義内で SQL エイリアスを指定する必要がありま す。例えば、以下のようになります。

Property Insert As %String [SqlFieldName = "X_Insert"];

3.4.1 UNICODE 識別子

Caché の UNICODE バージョンをインストールしている場合は、前述の通り、SQL 識別子の中に有 効な UNICODE 文字 (16ビッド) を使用できます。

3.4.2 区切り識別子

SQL 標準は、区切り識別子 (二重引用符に囲まれた識別子) をサポートします。区切り識別子には、 (スペース、句読点、予約語を含め) あらゆる文字を使用できます。 例えば、下記のクエリは、列とテーブルの両方の名前に区切り識別子を使用します。

SELECT "My Field" FROM "My Table" WHERE "My Field" LIKE 'A%'

文字リテラル “A%” は、引用符で囲みます。

クラス名とプロパティ名には、区切り識別子を使用できません。クラス定義によって定義されている SQL テーブル内で区切り識別子を使用する場合は、対応するクラス定義で SQL エイリアスを指定 します。

Property MyField As %String [SqlFieldName = "My Field"];

(34)

Caché SQL では、区切り識別子に対するサポートはオプションです。既定では、区切り識別子のサ ポートは無効です。 区切り識別子が無効の場合は、二重引用符の中の文字は、文字リテラルとして処理されます。 システム管理ポータルを使用して、区切り識別子のサポートを有効、または無効に設定できます。 1. (Caché キューブ・メニューから) システム管理ポータルを起動します。 2. [システム構成]で[詳細設定]を選択します。 3. プル・ダウン・リストの[カテゴリ]から[SQL]を選択します。 4. [区切り識別子をサポート]オプションをご希望の設定に変更します。

3.4.3 SQL 予約語

SQL には、識別子として使用できない予約語のリストがあります。 この SQL 予約語リストは、"Caché SQL リファレンス" の "予約語" のページを参照してください。

3.5 照合

照合は、SQL 内で値を並べる方法を指定します。照合は、照合関数 (値を照合値に変換する組み 込みの関数) によって指定されます。例えば、SQLUPPER 照合 (大文字と小文字を区別しない照 合) は、文字列をすべて大文字に変換します (注意: SQLUPPER 変換は SQL の UPPER 関数の 結果とは異なります)。 Caché は以下の照合関数を提供しています。

(35)

主な照合関数 説明 照合関数 末尾のスペースや大文字と小文字の区別も含め、厳密に値を並 べます。数値で始まる文字列値がある文字列データ (例えば '123'、'123abc'、または '-123abc') に対しては、使用しないでくだ さい。 EXACT 大文字と小文字を区別した文字列順に、値を並べます。値を文 字列に変換し、後続の空白 (スペースやタブなど) を削除し、文 字列の最初の部分に空白を 1 つ追加します。空白 (スペース、 タブなど) だけを含む値を SQL 空文字列として照合します。 SQLSTRING SQLSTRING と同様ですが、文字列を最初の n 文字に切り捨て ます。n には正の整数を指定します。この照合を使用して、長い 文字列のインデックスと並び替えを向上させます。 SQLSTRING(n) 大文字と小文字を区別しない文字列順に、値を並べます。値を 文字列に変換し、後続の空白 (スペースやタブなど) を削除し、 文字列の最初の部分に空白を 1 つ追加します。空白 (スペース、 タブなど) だけを含む値を SQL 空文字列として照合します。 SQLUPPER SQLUPPER と同様ですが、文字列を最初の n 文字に切り捨て ます。n には正の整数を指定します。この照合を使用して、長い 文字列のインデックスと並び替えを向上させます。 SQLUPPER(n) SQL は、以下の演算時にフィールドの照合値を使用します。 • ORDER BY 節でフィールドを使用する場合 • フィールドに SQL 比較演算子 (=、>、<、BETWEEN など) を使用している場合 • フィールドで %STARTSWITH 演算を使用している場合

• フィールドで MIN、MAX、DISTINCT、GROUP BY 演算を使用している場合。UNION は DIS-TINCT 演算も含みます。 注釈: LIKE 比較演算子は、照合を使用しません。 フィールドの照合は、以下のように定義されます。 1. フィールドに使用されるデータ型は、既定の照合を指定します。文字列データ型 (%String など) の既定は、SQLUPPER です。現在提供されている照合関数は、文字列以外のデータ型では、 あまり便利ではありません。 照合

参照

関連したドキュメント

タップします。 6通知設定が「ON」になっ ているのを確認して「た めしに実行する」ボタン をタップします。.

12―1 法第 12 条において準用する定率法第 20 条の 3 及び令第 37 条において 準用する定率法施行令第 61 条の 2 の規定の適用については、定率法基本通達 20 の 3―1、20 の 3―2

7-3.可搬型設備,消火設備 大湊側エリア 常設代替交流電源設備 使用可能・使用不可・不明 1 ガスタービン発電機 ガスタービン発電機用

計量法第 173 条では、定期検査の規定(計量法第 19 条)に違反した者は、 「50 万 円以下の罰金に処する」と定められています。また、法第 172

(a) ケースは、特定の物品を収納するために特に製作しも

利用している暖房機器について今冬の使用開始月と使用終了月(見込) 、今冬の使用日 数(見込)

第一の場合については︑同院はいわゆる留保付き合憲の手法を使い︑適用領域を限定した︒それに従うと︑将来に

( (再輸出貨物の用途外使用等の届出) )の規定による届出又は同令第 38 条( (再輸 出免税貨物の亡失又は滅却の場合の準用規定)