Различия в подготовленных и прямых заявлениях с использованием Oracle ODBC - PullRequest
1 голос
/ 20 октября 2008

Я использую базу данных Oracle с сопоставлением, отличным от языка моей ОС. Я получаю доступ к базе данных с помощью драйвера ODBC. Когда я подготавливаю оператор (например, «select * from x where =?»), Который включает специальные символы не ASCII, поддерживаемые параметрами сортировки БД, я нахожу строку данных с символами. Когда я выполняю выборку непосредственно с аргументом в строке sql, строка данных не найдена.

1 Ответ

1 голос
/ 20 октября 2008

С моей стороны, я могу предположить, но это может быть связано с тем, что ваш клиентский компьютер не кодирует строку sql с аргументом, записанным в него правильно. Я думаю, что если ваш клиент настроен на региональные настройки, отличные от параметров сортировки БД, массив символов, содержащий оператор select, который отправляется в Oracle, будет содержать «неправильные» байты, в которых расположены оригинальные символы funky - Oracle будет интерпретировать их как некоторые символ, отличный от того, который вы отправили изначально (в результате чего строка не будет найдена).

Есть ли причина, по которой вы не можете просто использовать параметризованный подход (поскольку он работает правильно)?

...