如何使用变量

时间:2016-12-28 21:54:15

标签: sql oracle

我有大约20个语句来创建表。每年数据都会发生变化。如何在Oracle的SQL窗口顶部声明一个变量,并在每个create语句中使用它。

Declare
      new_yr number(5) := 2015;
BEGIN

create table my_table as
select new_yr as yr,
       t.index,
       t.xcode,  
      .........
.........
......
from acccounts t
Join persons a on a.new_yr=(new_yr-t.new_yr)
group by t.index,
         t.xcode;

该代码似乎无法运作。

1 个答案:

答案 0 :(得分:0)

您可以通过创建动态CTAS脚本并发出EXECUTE IMMEDIATE声明来执行此操作。

P.S。不确定您是否将所有表格加入到表格PERSONS中,因此只需根据需要进行修改。

Declare

        new_yr_var  varchar2(100) := 2015;

        cursor  tbl_names
        is
        select  owner
            ,   Table_name
        from    dba_tables
        where   table_name in  ('your_table_names_here');

        sql_statement := varchar2(4000);

BEGIN

    for c1 in tbl_names loop;

        sql_statement := 'CREATE TABLE '||C1.owner||'.'||C1.Table_name||'_'||new_yr_var||' AS ';
        sql_statement := sql_statement||'SELECT COLUMNS_HERE FROM'||C1.owner||'.'||C1.Table_name||'Join persons a on a.new_yr=(new_yr-t.new_yr) ';         
        sql_statement := sql_statement||'group by t.index, t.xcode';

        EXECUTE IMMEDIATE (sql_statement);

    end loop;

END;