代码之家  ›  专栏  ›  技术社区  ›  iminiki Shivam Krishna

如何在Oracle中使用字符串选择表?

  •  0
  • iminiki Shivam Krishna  · 技术社区  · 6 年前

    首先,我知道这个问题很模糊,所以如果你能更好地描述它,请随意编辑。 TEST_201812 , TEST_201901

    TEST_DATE:
    
    ID   DATE
    1    201810
    2    201811
    3    201812
    4    201901
    

    现在我想要的是选择上面提到的表(例如。 测试_201812 )利用 TEST_DATE

    select * from TEST_(select DATE from TEST_DATE where ID = 1)
    

    有人知道如何做到这一点吗?

    1 回复  |  直到 6 年前
        1
  •  5
  •   Littlefoot    6 年前

    说真的,这样的数据模型是一个错误 . 如果你想分开几个月 分别地

    无论如何,这里有一个方法:

    示例表和返回refcursor的函数:

    SQL> create table test_201812 as select * From dept;
    
    Table created.
    
    SQL> create table test_date (id number, datum number);
    
    Table created.
    
    SQL> insert into test_date values (1, 201812);
    
    1 row created.
    
    SQL> create or replace function f_test (par_id in test_date.id%type)
      2    return sys_refcursor
      3  is
      4    l_datum test_date.datum%type;
      5    l_str   varchar2(200);
      6    l_rc    sys_refcursor;
      7  begin
      8    select datum
      9      into l_datum
     10      from test_date
     11      where id = par_id;
     12
     13    l_str := 'select * from test_' || l_datum;
     14    open l_rc for l_str;
     15    return l_rc;
     16  end;
     17  /
    
    Function created.
    

    测试:

    SQL> select f_test(1) from dual;
    
    F_TEST(1)
    --------------------
    CURSOR STATEMENT : 1
    
    CURSOR STATEMENT : 1
    
        DEPTNO DNAME          LOC
    ---------- -------------- -------------
            10 ACCOUNTING     NEW YORK
            20 RESEARCH       DALLAS
            30 SALES          CHICAGO
            40 OPERATIONS     BOSTON
    
    
    SQL>