Я поддерживаю сторонний драйвер Informix, написанный с помощью запросов API-интерфейса ESQL (Informix API). Я работаю над ошибкой, в которой для полей TEXT INSERT работают нормально и UPDATE сбой. Выполняя код, я обнаружил, что мы проверяем нашу структуру sqlda, чтобы сообщить нам, следует ли и как связывать, и после вызова sqli_describe_statement переменная sqlda.sqld содержит 2, правильное количество связанных параметров для этот ввод вставки, и параметры отображаются правильно, тогда как в случае обновления возвращенный номер равен 0, без информации о параметрах (он должен быть 1, для одного параметра в: «UPDATE TESTTAB SET COLNAME =? ГДЕ OTHERCOLNAME = 1 ").Обновление TEXT или TEXT на динамическом сервере Informix
Используя информацию sqlda, мы правильно настроили требуемую структуру локатора для INSERT, но мы не можем обновить ее, потому что информации там нет. Если я отлаживаю его в отладчике и запускаю код настройки для локатора, он обновляется отлично.
Утверждение, безусловно, выглядит правильным, и та же переменная используется для INSERT как связывание UPDATE. Кроме того, у sqli_prep нет проблем с обновлением. Для описания sqsla.code возвращает разные неотрицательные числа 4 и 6, представляющие различные типы описываемых инструкций, как документированные (т. Е. Не код ошибки), поэтому нет очевидной проблемы.
Есть ли что-то еще, что я должен проверить в коде перед этим, что может вызвать это странное поведение (кроме специальной обработки для различных запросов случае - ничего там)
Я пропускаю что-то фундаментальное здесь о том, как делать UPDATE на TEXT -полях, например, вам нужно создать объект локатора, найти строку и три раза нажать на пятки и сказать: «Там нет места, как IBM?»
Пока что в документации Google мало что появилось, но если вы знаете документы или образцы, которые указывают путь, это тоже классно.
Какая версия IDS? Какая версия ESQL/C (или CSDK)? –
Hi Jonathan, Я проверю, когда вернусь в понедельник. Сервер IDS довольно недавно, 11,0 или 11,5? Я верю. Я уверен, что модифицированный код ESQL, который мы используем, использует старые заголовки и библиотеки, но при необходимости я всегда могу поменять их позже (возможно, 3.0 клиента). Да, код был написан давно - в начале 90-х - и я готов поспорить, что это было довольно долго, поскольку библиотеки были изменены, если они когда-либо были с самого начала. –