Oracle拼接字符串的两种方式

1.listagg

     该方法拼接后是varchar2类型,有最大长度限制,在Oracle Database中,VARCHAR2 字段类型,最大值为4000;PL/SQL中 VARCHAR2 变量类型,最大字节长度为32767。

     适用场景:当要拼接的字符较少时使用。

select 'select ' ||col|| ' from ' || table_name ||';'
from
(
select owner||'.'||table_name as table_name,
       listagg(to_char(column_name),'||''^C''||') within group(order by owner||'.'||table_name )  as col
from all_tab_columns
where owner='USE' 
group by owner||'.'||table_name
);

2.xmlagg

     该方法拼接完后是CLOB对象,最多能容纳4GB的数据,查看时可用to_char()显示。

     适用场景:当要拼接的字符很多时使用。

select 'select ' ||to_char(col)|| ' from ' || table_name ||';'
from
(
select owner||'.'||table_name as table_name,
       xmlagg(xmlparse(content column_name||',' wellformed) order by column_name).getclobval() as col
from all_tab_columns
where owner='USE' 
group by owner||'.'||table_name
);

 

你可能感兴趣的:(oracle)