Не совсем ответ как таковой, но несколько пунктов, которые, я надеюсь, помогут.
Похоже, есть небольшая разница в том, как возвращаются большие объекты между 10g и 11g, под 11g есть некоторыепримечания о преобразовании btyes в byteStreams, когда LOB превышают определенное значение, в справочном руководстве JDBC (я понимаю, что это не влияет на вызовы OCI, поскольку они используют другой набор драйверов).
Из того, что я вижус точки зрения функций OCI8 в php, операция по умолчанию для функций выборки заключается в том, что большие объекты возвращаются в качестве ссылки и должны быть доступны с использованием функций ->read()
->load()
и т. д. (см. http://au.php.net/oci_fetch_array - относительнорежим и значение по умолчанию).
Теперь я не знаю, используете ли вы функции OCI для доступа к вашей системе оракула, поскольку она не указана в вашем вопросе.
Пара других элементов, которые могут помочь ввыяснить это можно было бы, если бы вы могли сообщить нам, если вы перекомпилировали php или обновили драйверы oracle с помощью новой клиентской базы.версия ent вообще.
Я знаю, что это не полное решение, но если вы используете oci_fetch_*
для возврата строки, добавьте второй аргумент к вызову OCI_RETURN_LOBS
, это приведет к возвращению выборкистрока поля LOB вместо ссылки на поток, или используйте $variable["C"]->load()
для доступа к этому LOB, это заставит его загрузить полный поток и действовать как обычная строка.
Надеюсь, это поможет.