2017-10-01 11 views
0

我的代码如下是一个循环,它将一些数据插入到表中。我想,以便它使用一个不同的值,每次前改变变量&yyyymm200902,200903,200904SQL开发人员 - 如何更改循环中定义的变量

我想不出如何改变loop.I内定义的变量试图yyyymm = &yyyymm + 1;但它似乎并没有工作,我也尝试使用declare,它也不起作用。

如何更改循环内的yyyymm变量?

define yyyymm = 200902; 
DECLARE 
    a number(2) := 1; 
BEGIN 
    WHILE a < 3 LOOP 
     insert into test_insert 
     select * 
     from testdata_&yyyymm; 
     a := a + 1; 
     --yyyymm = &yyyymm + 1; 
    END LOOP; 
END; 

回答

2

使块中的定义的变量的副本来增加和运行动态SQL(EXECUTE IMMEDIATE)的insert如下。

define yyyymm = 200902; 
DECLARE 
    a number(2) := 1; 
    yyyymm NUMBER := &yyyymm; 
BEGIN 
    WHILE a < 3 LOOP 
     EXECUTE IMMEDIATE 'insert into test_insert 
     select * 
     from testdata_'||yyyymm; 
     a := a + 1; 
     yyyymm := yyyymm + 1; 
    END LOOP; 
END; 

/