【问题标题】:Update Oracle CLOB with PHP使用 PHP 更新 Oracle CLOB
【发布时间】:2016-04-10 05:48:29
【问题描述】:

我有一个 Oracle 表,其中包含 1 个数据类型为 CLOB 的字段。

我想用一个长字符串(超过 4,000 个字符)替换 CLOB 的内容。

OCI8 是使用 PHP 实现此目的最简单的方法吗?

普通的 sql 就是这样的:

更新 TableX 设置 clobFieldX = '我的很长的字符串' 其中 keyField = 'value';

我一直在谷歌上搜索一个简单的示例,但找不到使用“where something = something”子句更新 CLOB 的示例。

http://php.net/manual/en/function.oci-new-descriptor.php 有一个插入语句的示例。一会儿我试试,不过就是把插入例子改成更新例子这么简单?

旁注:OCI 是通过 PHP 与 Oracle 交互的最佳方式吗?有更友好的库/扩展吗?

【问题讨论】:

  • 不,没用。该死。

标签: php oracle-call-interface


【解决方案1】:
This worked: function updateClob($groupId,$memberList,$conn) {
$sql = "UPDATE LP_GROUP SET MEMBER_EXPR_XML = EMPTY_CLOB() WHERE GROUP_ID = '$groupId' RETURNING MEMBER_EXPR_XML INTO :lob";
//echo $sql."\n";
$clob = OCINewDescriptor($conn, OCI_D_LOB);
$stmt = OCIParse($conn, $sql);
OCIBindByName($stmt, ':lob', &$clob, -1, OCI_B_CLOB);
OCIExecute($stmt,OCI_DEFAULT);
if($clob->save($memberList)){
    OCICommit($conn);
    echo $groupId." Updated"."\n";
}else{
    echo $groupId." Problems: Couldn't upload Clob.  This usually means the where condition had no match \n";
}
$clob->free();
OCIFreeStatement($stmt);

}

【讨论】:

    猜你喜欢
    • 2012-01-17
    • 1970-01-01
    • 1970-01-01
    • 2011-12-29
    • 1970-01-01
    • 1970-01-01
    • 2012-01-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多