2008-10-20 9 views
1

J'utilise une base de données Oracle avec un classement différent de mon langage de système d'exploitation. J'accède à la base de données en utilisant le pilote ODBC. Lorsque je prépare une instruction (par exemple, "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 le select directement avec l'argument dans la chaîne sql, la ligne de données est introuvable.Différences entre les instructions préparées et les instructions directes utilisant Oracle ODBC

Répondre

1

Pensez-y, 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 autre paramètre régional que le classement DB, le tableau de caractères contenant l'instruction select envoyée à Oracle contiendrait des octets "incorrects" dans lesquels se trouvaient les caractères génériques d'origine - Oracle les interpréterait comme caractère autre que celui que vous avez envoyé à l'origine (ce qui fait que la ligne n'a pas été trouvée).

Y a-t-il une raison pour laquelle vous ne pouvez pas simplement utiliser l'approche paramétrée (puisqu'elle fonctionne correctement)?

+0

En fin de compte, je dois implémenter la requête en utilisant l'approche paramétrée, je voulais juste savoir s'il y a une solution rapide. Merci! – vividos