2016-04-10 3 views
0

У меня есть таблица Oracle с 1 полем типа CLOB.Обновление Oracle CLOB с PHP

Я хочу заменить содержимое CLOB длинной строкой (более 4000 символов).

Это OCI8 самый простой способ сделать это с помощью PHP?

Regular SQL будет просто что-то вроде этого:

Update TableX Set clobFieldX = 'моя очень длинная строка' Где KEYFIELD = 'значение';

Я пробовал для простого примера, но не могу найти тот, который обновляет CLOB с предложением «где-то что-то».

http://php.net/manual/en/function.oci-new-descriptor.php имеет пример инструкции вставки. Я попробую это немного, но это так же просто, как изменить пример вставки на пример обновления?

Сторона примечания: OCI - лучший способ взаимодействия с Oracle с PHP? Есть ли более дружественная библиотека/расширение?

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

}

Смежные вопросы