使用from子句中的子查询动态选择表名

时间:2014-02-11 11:49:34

标签: oracle dynamic

我有一个映射表,其中包含源和表名作为属性。

我有以下查询:

select *
from 
(select table_name from mapping_table where source='CL Table')

我想检索table_name的数据,但此查询只返回表名而不是数据。

怎么做?

1 个答案:

答案 0 :(得分:0)

 DECLARE
    v_mystring VARCHAR(50);
    v_my_ref_cursor sys_refcursor;
    myrecord <some_table_or_type>;
  BEGIN

    select table_name into my_table_name
      from mapping_table 
    where source='CL Table';

    v_mystring := 'SELECT * from '||my_table_name;;

    OPEN v_my_ref_cursor FOR v_mystring;

    LOOP
      FETCH v_my_ref_cursor INTO myrecord;
      -- your processing
    END LOOP;
    CLOSE v_my_ref_cursor;
  END;