如何在 Dbms_output.put_line(''); 中使用 <br> 标签在 PL/SQL 甲骨文中?

Posted

技术标签:

【中文标题】如何在 Dbms_output.put_line(\'\'); 中使用 <br> 标签在 PL/SQL 甲骨文中?【英文标题】:How to use <br> tag in Dbms_output.put_line(''); in PL/SQL Oracle?如何在 Dbms_output.put_line(''); 中使用 <br> 标签在 PL/SQL 甲骨文中? 【发布时间】:2015-09-18 13:08:22 【问题描述】:

我有一个在应用程序中使用的查询,我在 PL/SQL 中使用 标记有困难。查询是:

SELECT LISTAGG(last_name, 'br') WITHIN group (ORDER BY last_name) 
into lastname from employees;

DBMS_OUTPUT.PUT_LINE(lastname);

我得到的输出是:Abel br Ande br Baer br

我想要的输出: 亚伯安德 贝尔

【问题讨论】:

尝试改用';&lt;br&gt;' @vkp:你确定这行得通吗?你有它的文档链接吗?我刚刚尝试过,对我不起作用...我认为 Oracle 对 &lt;br&gt; 没有任何特殊处理...请链接到任何相关文档,但是,我很想学习新知识:) 或者使用游标循环调用dbms_output.put_line 一次employees.lastname 【参考方案1】:

“br”在我知道的 Oracle 中没有特殊含义,请改用 CHR(10) (即回车)。 (如果在 Windows 中工作,则为 CHR(10)+CHR(13))

    1  with w_data as ( select level id from dual connect by level <= 10 )
    2  select listagg ( id, chr(10) ) within group (order by id )
    3*   from w_data
  SQL> /

  LISTAGG(ID,CHR(10))WITHINGROUP(ORDERBYID)
  --------------------------------------------------------------------------------
  1
  2
  3
  4
  5
  6
  7
  8
  9
  10


  1 row selected.

注意它是如何显示“选择了 1 行”的,但是事情被分成单独的行......我相信这是你想要的效果?

[edit] 抱歉,刚刚意识到您在 pl/sql 中 .. 这是 pl/sql 中的相同测试查询,通过 dbms_output ...:

  declare
     lv_str   varchar2(4000);
  begin

  with w_data as ( select level id from dual connect by level <= 10 )
  select listagg ( id, chr(10) ) within group (order by id )
    into lv_str
    from w_data;

  dbms_output.put_line ( lv_str );
  end;
  /

  "gg.sql" 15 lines, 259 characters

  SQL> @gg
  1
  2
  3
  4
  5
  6
  7
  8
  9
  10

  PL/SQL procedure successfully completed.

【讨论】:

感谢同上的回答...请让我知道如何提高 Oracle 的技能,因为我是初学者

以上是关于如何在 Dbms_output.put_line(''); 中使用 <br> 标签在 PL/SQL 甲骨文中?的主要内容,如果未能解决你的问题,请参考以下文章

dbms_output.put_line 的替代方案

存储过程的dbms_output.put_line问题

PL/SQL中测试存储过程,如何立即输出DBMS_OUTPUT的语句。

Oracle PL/SQL 的 dbms_output.put_line() 与 dbms_output.put()

在 dbms_output.put_line 和 dbms_output.put pl/sql 之间混淆

Oracle 中的dbms_output.put_line