2016-11-11 27 views
5

我已經創建了一大段腳本,它將最後一行的新行插入我的目標表中。在一個循環中運行一個大的oracle SQL腳本

腳本包含許多SELECT語句和臨時表。

我想循環它連續運行2000次,並不能看到比F5推2000次任意選擇。

是否有一個的Oracle SQL相當於包裹代碼到SAS宏和循環它2000倍?

+2

Oracle有一個'FOR'循環就像大多數編程語言。檢查文檔或[這裏](https://www.techonthenet.com/oracle/loops/for_loop.php)。 –

+3

@EdGibbs - Oracle SQL不是您所說的「編程語言」。 SQL中通常沒有FOR循環,特別是在Oracle中。相比之下,Oracle和其他數據庫一樣,具有緊密集成的過程語言PL/SQL。您的文檔鏈接是PL/SQL中的FOR循環,而不是Oracle SQL中的。 – mathguy

+0

你搜索了什麼?我只是Google搜索「用SAS腳本包裝Oracle SQL」,並且從我所知道的情況來看,有些解決方案可以爲理解SAS的人提供。 – mathguy

回答

2

PL/SQL匿名塊最好是在這種情況:

BEGIN 
    FOR i IN 1..2000 LOOP 
     -- Insert scripts go here 
    END LOOP 
END; 
/
0

你可以嘗試插入語句轉換成純SQL?這是加載大量數據的最快和最乾淨的方法。

一旦你的設置,然後row_source代可以通過笛卡爾產區完成的結果集。

例如:假設一開始你的表有以下

EmpNo, EmpName, Sal 
1000 , Mark , 500 
1001 , Jorja , 100 

我希望生成的表的內容,然後3次我會做以下

insert into emp 
select (select max(empno) 
      from emp 
     )+lvl as empNo 
     , empName 
     , Sal 
    from emp 
    join (select level as lvl 
      from dual 
     connect by level<=3 
     )row_source_generation 
    on 1=1; 

這會給下面的輸出

EmpNo, EmpName, Sal 
1000 , Mark , 500 
1001 , Jorja , 100 
1002 , Mark1 , 500 
1003 , Jorja1 , 100 
1004 , Mark2 , 500 
1005 , Jorja2 , 100 
1006 , Mark3 , 500 
1007 , Jorja3 , 100 
相關問題