Différences entre les instructions préparées et les instructions directes utilisant Oracle ODBC

StackOverflow https://stackoverflow.com/questions/218332

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.

Était-ce utile?

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)?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top