2016-04-10 50 views
0

我有一個帶有1個數據類型爲CLOB的字段的Oracle表。用PHP更新Oracle CLOB

我想用長字符串(超過4,000個字符)替換CLOB的內容。

OCI8是使用PHP來完成此操作的最簡單方法嗎?

常規的SQL是簡單的是這樣的:

更新的TableX 設置clobFieldX = '我很長的字符串' 其中關鍵字段= '值';

我一直在Google上搜索一個簡單的例子,但找不到一個用'where something = something'子句更新CLOB的例子。

http://php.net/manual/en/function.oci-new-descriptor.php有一個插入語句的例子。我會稍微嘗試一下,但是就像將插入示例更改爲更新示例一樣簡單?

備註:OCI是使用PHP與Oracle進行交互的最佳方式嗎?是否有更友好的圖書館/擴展?

+0

不,沒有工作。該死。 – JasonW

回答

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); 

}