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 effectuer une requête hétérogène, suivez les étapes ci-dessous*:
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*:
1 2 3 4 5 6
|
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.
Partager