Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

PDO_OCI - ke dalam bidang gumpalan

Saya telah menemukan solusi di sini:

https://bugs.php.net/bug.php?id=57095

[2009-08-11 11:27 UTC] lehresman di gmail dot comwrote:

Seorang rekan kerja menemukan solusinya. Saat berhadapan dengan CLOB di Oracle menggunakan PDO, jangan memperlakukannya sebagai LOB. Anda perlu mengikatnya sebagai PDO::PARAM_STR, dan memberikan panjang string (parameter ke-4 adalah kuncinya, gagal dengan pesan kesalahan tentang LONG ketik sebaliknya).

Berikut adalah contoh cara sukses memasukkan ke dalam CLOB di 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();
}

Bekerja dengan baik untuk saya...




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. masalah menggunakan parameter Oracle di SELECT IN

  2. Memanggil panggilan fungsi dalam string dalam Prosedur Oracle

  3. dapatkah saya mempertahankan satu sesi Oracle dari dua klien oci?

  4. Oracle memilih nilai hingga ruang pertama atau akhir baris

  5. Mencampur pernyataan DDL dan DML dalam satu skrip