博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

查询表的所有列并以豆号间隔

Posted on 2011-11-05 09:38  奥客  阅读(193)  评论(0编辑  收藏  举报

--查询所有的表
select * from all_objects where object_name=upper('secom_cv_cust_order_data')

 

--查询表的所有列,并以豆号间隔
select tcv.table_name,  ltrim( max(sys_connect_by_path(tcv.column_name, ',') ),',') column_name
from
(
  select tc.table_name, tc.column_name ,row_number() over(partition by tc.table_name order by column_id) rn
  from all_tab_columns tc
  where  tc.owner=upper('secom') and tc.table_name=upper('secom_cv_cust_order_data')
) tcv
start with tcv.rn=1
connect by prior tcv.rn=tcv.rn-1
and  tcv.table_name=prior tcv.table_name
group by tcv.table_name

 

 


--==============

--带数据类型
select tcv.table_name,  ltrim( max(sys_connect_by_path(tcv.column_name || ' ' || tcv.data_type || chr(13) || chr(10), ',') ),',') column_name
from
(
  select tc.table_name, tc.column_name ,tc.data_type ,row_number() over(partition by tc.table_name order by column_id) rn
  from all_tab_columns tc
  where  tc.owner=upper('secom') and tc.table_name=upper('Secom_Credit_Check_record')
) tcv
start with tcv.rn=1
connect by prior tcv.rn=tcv.rn-1
and  tcv.table_name=prior tcv.table_name
group by tcv.table_name