異種間の問合わせの作成
メモ: ボーランド データベース エンジン(BDE)の使用は推奨されません。今後 BDE は機能拡張されません。たとえば、BDE では Unicode がサポートされていません。BDE を使用して新たに開発しないことをお勧めします。既存のデータベース アプリケーションを BDE から dbExpress に移行することを検討してください。
TQuery は複数の種類のサーバーまたはテーブル(たとえば、Oracle テーブルのデータと Paradox テーブルのデータ)に対する異種間の問い合わせもできます。異種間の問い合わせを実行すると、BDE がローカル SQL を使って問い合わせを解析して処理します。BDE がローカル SQL を使用するため、サーバー独自に拡張された SQL 構文はサポートされません。
異種間の問い合わせを実行するには:
- BDE Administrator または SQL エクスプローラを使用して、問い合わせでアクセスするデータベースごとに個別の BDE エリアスを定義します。
- TQuery の DatabaseName プロパティは空白のままにしてください。使用する 2 つのデータベースの名前は SQL 文で指定します。
- SQL プロパティで、実行する SQL 文を指定します。この文の各テーブル名の前には、そのテーブルがあるデータベースの BDE エリアスを、コロンで囲んで記述します。この参照全体を引用符で囲んでください。
- 問い合わせ用のパラメータを Params プロパティに設定します。
- 初めて問い合わせを実行する前に Prepare を呼び出して、その問い合わせを実行するための準備をします。
- 実行する問い合わせの種類に応じて Open または ExecSQL を呼び出します。
たとえば、CUSTOMER テーブルを持つ Oracle データベースに Oracle1 というエリアスを定義し、ORDERS テーブルを持つ Sybase データベースに Sybase1 というエリアスをそれぞれ定義するとします。この 2 つのテーブルに対する単純な問い合わせは次のようになります。
SELECT Customer.CustNo, Orders.OrderNo FROM ":Oracle1:CUSTOMER" JOIN ":Sybase1:ORDERS" ON (Customer.CustNo = Orders.CustNo) WHERE (Customer.CustNo = 1503)
異種間の問い合わせでデータベースを指定するのに、BDE エリアスを使用するかわりに TDatabase コンポーネントを使用することもできます。TDatabase を通常どおりにデータベースを指し示すように設定し、TDatabase.DatabaseName を任意のユニークな値に設定して、その値を SQL 文の中で BDE エリアス名のかわりに使用します。