2010-11-03 3 views
4

С MySQL я могу хранить большие блоки текста в столбце TEXT, тянуть, как и любой другой тип столбца, без проблем.Вытягивание Oracle CLOB отличается от VARCHAR2?

Кажется, что когда я пытаюсь сделать то же самое с CLOB на Oracle, я получаю ошибки.

Вот где я тяну:

<?php 
$comments = 'SELECT q2_other, q4_comments, q9_describe, q10, q11_comments, q12_describe, additional_comments FROM exit_responses 
      WHERE sdate BETWEEN \'' . $start . '\' 
      AND \'' . $end . '\''; 

$comments_results = oci_parse($conn, $comments); 
oci_execute($comments_results); 

while($row = oci_fetch_assoc($comments_results)){ 
    if($row['Q2_OTHER'] != null){ 
    echo '<div class="response">'; 
    echo '<div class="info-bar">'; 
     echo '<h5 class="date">' , date('F j, Y',strtotime($row['SDATE'])) , '</h5>'; 
     echo ($_GET['names'] == 1) ? '<h5 class="name">' . $row['f_name'] . ' ' . $row['l_name'] . ' - ' . $row['title'] . ' - ' . $row['emp_type'] . '</h5>' : ''; 
     echo '<div class="clear"></div>'; 
    echo '</div>'; 
    echo '<div class="comments">' , $row['q2_other'] , '</div>'; 
    echo '<div class="clear"></div>'; 
    echo '</div>'; 
    } 
} 
?> 

... и вот что я получаю, когда я пытаюсь print_r() $ строки в то время как() цикла:

[Q2_OTHER] => OCI-Lob Object 
     (
      [descriptor] => Resource id #17 
     ) 

... (вместе с другими столбцами в запросе)

Есть ли что-то особенное, что мне нужно делать с CLOBS или мой синтаксис совсем немного.

Спасибо :)

ответ

5

Для больших объектов столбцов OCI будет возвращать объект OCI-Леба, на котором вы должны вызвать load() или read(int bytes) получить содержимое:

$clob_contents = $row['Q2_OTHER']->load(); 
3

или вы можете использовать OCI_RETURN_LOBS флаг как $row = oci_fetch_array($connection_id, OCI_ASSOC | OCI_RETURN_LOBS) принести CLOB как VARCHAR2:

$row['clob_field_name']

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