【发布时间】:2012-02-06 09:01:27
【问题描述】:
我在这里有一个新数据库,它是从 Oracle 10g 到 Oracle 11g 的升级版本 - 主要问题是 LOB 列,每次任何函数返回 LOB 作为结果时,新数据库都不会返回类似旧的做了:
旧数据库:
["C"]=>
string(23) "3874163,3874197,3874201"
新数据库:
["C"]=>
resource(182) of type (stream)
现在在读取流时,有时会出现引用不存在的流资源的错误,并且一切都失败了。我猜连接在没有读取流的情况下关闭,因此访问丢失。
例如,当更改语句以包含针对 varchar 的强制转换时:
CONVERT(VARCHAR, C, 120)
或者像这样:
SELECT TO_CHAR(FUNC())
该值再次作为字符串返回,但这并不是真正的最佳解决方案,因为每个语句都需要更改。
是否有任何方法/选项可以防止 LOB 作为流传输,而是像 Oracle 10g 中那样作为字符串传输?
编辑:
我们正在使用 oci 函数集进行 db 访问。
【问题讨论】:
-
数据库元数据是否发生了变化? 11g 有一些新的 LOB 选项,例如 SecureFiles。你能比较一下
USER_LOBS在10g和11g之间的区别吗? -
@jonearles
USER_LOBS是什么?我对USER_JOBS很熟悉,当我使用USER_LOBS访问谷歌时,这几乎是我能找到的所有内容。我认为元数据没有改变,但我会检查一下。 -
您专门使用哪些 oci 函数进行读取?另外,请参阅此处了解 oci 10g/11g 差异和示例docs.oracle.com/cd/B28359_01/appdev.111/b28395/oci07lob.htm
-
我们这里的代码中大部分都是
oci_fetch_row()...
标签: php sql database oracle oracle11g