Jeg har fundet en løsning her:
https://bugs.php.net/bug.php?id=57095
[2009-08-11 11:27 UTC] lehresman hos gmail dot skrev:
En kollega fandt løsningen. Når du har at gøre med CLOB'er i Oracle, der bruger PDO, skal du ikke behandle det som en LOB. Du skal binde den som en PDO::PARAM_STR og give den længden af strengen (den 4. parameter er nøglen, ellers mislykkes den med en fejlmeddelelse om LONG type).
Her er et eksempel på, hvordan man med succes indsætter i en CLOB i Oracle:
<?php
/*
CREATE TABLE clob_test (my_clob CLOB)
*/
$big_string = "";
for ($i=0; $i < 10000; $i++)
$big_string .= rand(100000,999999)."\n";
try {
$pdo = new PDO("oci:dbname=TESTDB", "TESTUSER", "TESTPW");
$stmt = $pdo->prepare("INSERT INTO healthbit.clob_test (my_clob) VALUES (:cl)");
$stmt->bindParam(":cl", $big_string, PDO::PARAM_STR, strlen($big_string));
$pdo->beginTransaction();
if (!$stmt->execute()) {
echo "ERROR: ".print_r($stmt->errorInfo())."\n";
$pdo->rollBack();
exit;
}
$pdo->commit();
$stmt = $pdo->prepare("SELECT my_clob FROM healthbit.clob_test");
$stmt->execute();
$row = $stmt->fetch();
$str = "";
while ($tmp = fread($row[0],1024))
$str .= $tmp;
echo strlen($str); // prints 70000
} catch (Exception $e) {
echo "ERROR: ";
echo $e->getMessage();
$pdo->rollBack();
}
Fungerer helt fint for mig...