使用PHP更新Oracle CLOB

时间:2016-04-10 05:48:29

标签: php oci

我有一个带有1个数据类型CLOB字段的Oracle表。

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

使用PHP,OCI8是最简单的方法吗?

常规sql就是这样的:

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

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

http://php.net/manual/en/function.oci-new-descriptor.php有一个insert语句的例子。我会稍微尝试一下,但它就像将插入示例更改为更新示例一样简单吗?

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

1 个答案:

答案 0 :(得分: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);

}