Différences entre les instructions préparées et les instructions directes utilisant Oracle ODBC
-
03-07-2019 - |
Question
J'utilise une base de données Oracle avec un classement différent de celui du système d'exploitation. J'accède à la base de données à l'aide du pilote ODBC. Lorsque je prépare une instruction (par exemple, un "select * from x where =?"), Qui implique des caractères spéciaux non-ASCII pris en charge par le classement de la base de données, je trouve la ligne de données avec les caractères. Lorsque j'exécute directement la sélection avec l'argument dans la chaîne SQL, la ligne de données est introuvable.
La solution
Je suppose que c'est ma faute, mais c'est peut-être parce que votre ordinateur client n'encode pas la chaîne SQL avec l'argument écrit correctement. Je pense que si votre client est défini sur un paramètre régional différent du classement de la base de données, le tableau de caractères contenant l'instruction select envoyée à Oracle contiendrait "incorrect". octets où se trouvent les caractères géniaux originaux - Oracle les interpréterait comme un caractère autre que celui que vous aviez initialement envoyé (ce qui rend la ligne introuvable).
Y a-t-il une raison pour laquelle vous ne pouvez pas simplement utiliser l'approche paramétrée (car elle fonctionne correctement)?