如何使用 OCI 将回车符 return/line 提要添加到要插入到 CLOB 中的条目?

How to add carriage return/line feed to an entry being inserted into a CLOB using OCI?

我在我的 Oracle table 中建立了一个配置为 CLOB 的列。该列的用途是包含最终用户输入的状态更新。

我使用以下代码通过 PHP/OCI 成功添加了更新:

if (!empty($lastUpdate)) {

$stid5 = oci_parse($connect, "UPDATE service_status SET ss_update_details = '$lastUpdate' || ss_update_details WHERE ss_id = $tableID");

$r = oci_execute($stid5);

}

您会注意到我使用串联方法将更新添加到列中,因此列中可以存在很多更新。

当我在 HTML 页面中使用此 PHP/OCI 代码检索要查看的数据时...

$stid1 = oci_parse($connect, "SELECT * FROM service_status WHERE ss_id = $tableID");

$r = oci_execute($stid1);

while (($row = oci_fetch_array($stid1, OCI_BOTH+OCI_RETURN_LOBS))!= false)
    {
        echo '<h3>Last Update Time and Action Taken:</h3>
        <p>'.$row['SS_UPDATE_DETAILS'].'</p>';
    }

...结果捆绑在一起,条目之间没有回车 return 或换行符。视觉上不令人愉悦...我知道这是预期的行为。

我的问题是:如何在每个条目的末尾添加一行 feed/carriage return 以便更 "user friendly" 阅读 CLOB 的内容?

我试过将字母 Z 作为 "dummy" 字符添加到我的 UPDATE 语句中,就像这样...

UPDATE service_status SET ss_update_details = '$lastUpdate Z' || ss_update_details WHERE ss_id = $tableID"

...然后使用 TRANSLATE...

将其与修改后的 SELECT 语句相结合
SELECT TRANSLATE(ss_update_details, 'Z', CHR(10)) FROM service_status WHERE ss_id = $tableID"

这导致没有行被 returned。不确定我使用的 oci_fetch_array 是否对我的翻译尝试感到满意?

非常感谢对此的任何帮助。

连接 CHR(10) 怎么样?这是一个例子:

SQL> create table test (col clob);

Table created.

SQL>
SQL> insert into test (col) values
  2    ('$lastUpdate on ' || to_char(sysdate, 'hh24:mi') || chr(10) ||
  3     '- updated by   ' || 'Littlefoot'                || chr(10) ||
  4     '- while anwering the question on Whosebug' || chr(10) ||
  5     'The End'
  6    );

1 row created.

SQL> select * From test;

COL
--------------------------------------------------------------------------------
$lastUpdate on 18:34
- updated by   Littlefoot
- while anwering the question on Whosebug
The End


SQL>  

感谢@Littlefoot 提供指导。为了看到我的 CLOB 记录显示在 HTML 页面上,中间有换行符,我将 <br /> 标记连接到每个正在更新的记录,如下所示:

UPDATE service_status SET ss_update_details = '$lastUpdate' || '<br />' || ss_update_details WHERE ss_id = $tableID"