2017-10-01 12 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; 

/