我们数据库中存在数据表,表名如这样201004
我可以使用
select table_name from tabs where table_name like '%'||(select to_char(sysdate,'yyyymm') from dual)
这样就能查询出来表名,
但是使用这个查询出来的表名做为另外一个搜索的表名就不行
如select * from (select table_name from tabs where table_name like '%'||(select to_char(sysdate,'yyyymm') from dual)) --假设搜索出来的表名只有一个oracle 9i,不用动态语句,有什么办法么?

解决方案 »

  1.   

    set heading off
    set feedback off
    spool b.sql
    SELECT   'select * from ' ||  TABLE_NAME || ';'   FROM   TABS
    where table_name like '%'||(to_char(sysdate,'yyyymm'));
    spool off;之后执行:
    @b.sql;
      

  2.   

    表名多个也没问题
    最好在plsql developer中执行
      

  3.   

    因为表名是字符串,必须使用动态SQL,
    另外如果只有一个表,查出表名重写一个SQL就行了,
    如果有多个,可以如上面所说的使用SQL语句拼接一个脚本出来
    然后将脚本复制出来在SQL窗口中执行