如何在 Dbms_output.put_line(''); 中使用 <br> 标签在 PL/SQL 甲骨文中?
How to use <br> tag in Dbms_output.put_line(''); in PL/SQL Oracle?
我有一个应用程序中使用的查询,但我在 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
我想要的输出:
阿贝尔
安德
贝尔
据我所知,"br" 在 Oracle 中没有特殊含义,请改用 CHR(10)(即 Carriage Return)。 (或 CHR(10)+CHR(13) 如果在 Windows 工作)
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.
我有一个应用程序中使用的查询,但我在 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
我想要的输出:
阿贝尔
安德
贝尔
"br" 在 Oracle 中没有特殊含义,请改用 CHR(10)(即 Carriage Return)。 (或 CHR(10)+CHR(13) 如果在 Windows 工作)
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.