2009-07-17 5 views
1

Vers le bas de la documentation SQLNativeSql() function, il semble que les pilotes ODBC exécutent la traduction.Profiter des capacités de traduction ODBC

Il dit:

Voici quelques exemples de ce que SQLNativeSql pourrait revenir pour la chaîne SQL entrée suivante contenant la fonction convert scalaire. On suppose que la empid colonne est de type ENTIER dans la source de données:
 
SELECT { fn CONVERT (empid, SQL_SMALLINT) } FROM employee 
Un pilote pour Microsoft SQL Server peut renvoyer la traduction chaîne SQL suivante:
 
SELECT convert (smallint, empid) FROM employee 
Un pilote pour ORACLE serveur peut retourner la traduction chaîne SQL suivante :
 
SELECT to_number (empid) FROM employee 
Un pilote pour Ingres peut renvoyer la traduction chaîne SQL suivante:
 
SELECT int2 (empid) FROM employee 

Est-ce vraiment vrai? Peut ODBC vraiment traduire les requêtes SQL afin que, idéalement, votre application pourrait fonctionner sur n'importe quel système de base de données en envoyant des requêtes via ODBC?

En pratique, cela fonctionne-t-il réellement? Où pouvez-vous trouver la liste "ODBC SQL Syntax"?

Répondre

1

La traduction dépend du pilote lui-même. Dans de nombreux cas, il retournera l'instruction SQL exacte que vous lui donnez. Donc, aucun ODBC ne fournit une balle magique. Vous devez toujours vous préoccuper de la base de données sur laquelle vous exécutez des requêtes. Si vous utilisez plusieurs moteurs de base de données, l'application doit adapter les requêtes à chacun d'entre eux (ou utiliser un SQL générique qui s'exécute sur chacun d'eux).