让我举个例子:
假设我有一个表TableA(Col1, Col2, Col3, Col4, Col5)
我有另一个TableB表,它们是需要获取的TableA列名称的条目,例如Col2 and Col5
现在我想编写一个SQL查询,它只会获取TableB中定义的TableA列。
答案 0 :(得分:1)
这是一个开始。
我们的想法是将column_names的连接列表构建为varchar
'col1, col2, col3, col4'
并在动态sql查询中使用它。
declare
column_list xmltype;
column_names varchar(10000);
begin
SELECT
XMLAGG (XMLELEMENT (e, t1.column_name || ',')).EXTRACT ('//text()')
column_name
into column_list
FROM all_tab_cols t1
where t1.table_name = 'TABLEA'
and exists (select null
from TableB
where t1.column_name = <the field for the column_name in tableB>);
column_names := RTRIM(column_list.getClobVal(), ',');
--this will just display the sql query, you'll need to execute it to get your results with EXECUTE IMMEDIATE
dbms_output.put_line( 'SELECT '||column_names||' from TableA');
end;