Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

PDO_OCI - एक क्लॉब फील्ड में

मुझे यहाँ एक समाधान मिला है:

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

[2009-08-11 11:27 यूटीसी] लेहरसमैन एट gmail डॉट कॉमराइट:

एक सहकर्मी ने समाधान खोजा। पीडीओ का उपयोग करते हुए ओरेकल में सीएलओबी से निपटने पर, इसे एलओबी के रूप में न मानें। आपको इसे PDO::PARAM_STR के रूप में बाँधना होगा, और इसे स्ट्रिंग की लंबाई देनी होगी (वह चौथा पैरामीटर कुंजी है, यह LONG प्रकार के बारे में एक त्रुटि संदेश के साथ विफल हो जाता है)।

Oracle में CLOB में सफलतापूर्वक सम्मिलित करने का एक उदाहरण यहां दिया गया है:

<?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();
}

मेरे लिए बिल्कुल ठीक काम करता है...




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. संक्षिप्त समय क्षेत्र के साथ स्ट्रिंग का टाइमस्टैम्प में रूपांतरण

  2. SQLException:प्रोटोकॉल उल्लंघन। Oracle JDBC ड्राइवर समस्या

  3. Oracle में समूह बनाम विभाजन द्वारा समूह

  4. ओरेकल डेटाबेस के साथ एंटिटी फ्रेमवर्क कनेक्शन

  5. 11gR2 संपीड़न सलाहकार =बुराई