Création de requêtes hétérogènes

De RAD Studio
Aller à : navigation, rechercher

Remonter à Utilisation d'ensembles de données BDE - Index

Remarque : Le moteur de base de données Borland (BDE, Borland Database Engine) a été déprécié. Il ne sera donc pas amélioré. Par exemple, le BDE ne prendra jamais en charge Unicode. Vous ne devriez pas entreprendre de nouveaux développements avec BDE. Prévoyez plutôt de migrer vos applications de bases de données existantes de BDE vers dbExpress.

TQuery supporte les requêtes hétérogènes sur plusieurs types de serveur ou de table (par exemple, des données d'une table Oracle et d'une table Paradox). Quand vous exécutez une requête hétérogène, le BDE analyse et traite la requête en utilisant Local SQL. Pour cette raison, la syntaxe SQL spécifique au serveur et étendue n'est pas supportée.

Pour exécuter une requête hétérogène

  1. Définissez des alias BDE distincts pour chaque base de données concernée dans la requête, en utilisant l'outil d'administration BDE ou l'explorateur SQL.
  2. Laissez vide la propriété DatabaseName de TQuery ; les noms des bases de données seront spécifiés dans l'instruction SQL.
  3. Dans la propriété SQL, spécifiez l'instruction SQL à exécuter. Faites-y précéder le nom de chaque table par l'alias BDE de la base de données de cette table, encadré par des caractères deux-points. La référence entière est elle-même encadrée de guillemets.
  4. Définissez les paramètres de la requête dans la propriété Params.
  5. Appelez Prepare pour préparer la requête avant sa première exécution.
  6. Appelez Open ou ExecSQL selon le type de requête que vous exécutez.

Par exemple, vous définissez un alias nommé Oracle1 pour une base de données Oracle comprenant une table CUSTOMER, et un alias nommé Sybase1 pour une base de données Sybase comprenant une table ORDERS. Une requête simple sur ces deux tables pourrait s'écrire :

SELECT Customer.CustNo, Orders.OrderNo
FROM ":Oracle1:CUSTOMER"
  JOIN ":Sybase1:ORDERS"
    ON (Customer.CustNo = Orders.CustNo)
WHERE (Customer.CustNo = 1503)

Dans une requête hétérogène, au lieu de spécifier la base de données à l'aide d'un alias, vous pouvez utiliser un composant TDatabase. Configurez TDatabase afin qu'il pointe sur la base de données, affectez à la propriété TDatabase.DatabaseName une valeur arbitraire mais unique, et utilisez ensuite cette valeur dans l'instruction SQL au lieu d'un nom d'alias BDE.

Voir aussi