獲取兩個表的公共字段,使用了wm_concat() 函數,但是打開行的時候報錯,因爲是clob的類型。
解決方法:
1、 使用to_char函數,轉成字符類型:
select to_char(wm_concat(COLUMN_NAME)) from all_tab_columns a where a.TABLE_NAME=‘表名1’ and a.OWNER=‘本地用戶1’
AND exists(select 1 from all_tab_columns@dj b where b.TABLE_NAME=‘表名2’ and b.OWNER=‘本地用戶2’
AND A.COLUMN_NAME=B.COLUMN_NAME) GROUP BY A.TABLE_NAME;
2、使用LISTAGG分析函數(11g Release 2),允許我們使用指定連接字符串:
逗號分隔:
select listagg(COLUMN_NAME, ‘,’) within group (order by COLUMN_NAME) as 列名 from all_tab_columns a where a.TABLE_NAME=‘表名1’ and a.OWNER=‘本地用戶1’
AND exists(select 1 from all_tab_columns@dj b where b.TABLE_NAME=‘表名2’ and b.OWNER=‘本地用戶2’
AND A.COLUMN_NAME=B.COLUMN_NAME) GROUP BY A.TABLE_NAME;
橫槓分隔:
select listagg(COLUMN_NAME, ‘-’) within group (order by COLUMN_NAME) as 列名 from all_tab_columns a where a.TABLE_NAME=‘表名1’ and a.OWNER=‘本地用戶1’
AND exists(select 1 from all_tab_columns@dj b where b.TABLE_NAME=‘表名2’ and b.OWNER=‘本地用戶2’
AND A.COLUMN_NAME=B.COLUMN_NAME) GROUP BY A.TABLE_NAME;
需要注意的是 wm_concat()函數有些版本不支持。