2016-11-11 19 views
5

Stworzyłem duży fragment skryptu, który wstawia nowe wiersze na samym końcu do mojej tabeli docelowej.Uruchamianie dużego skryptu SQL w pętli

Skrypt zawiera wiele instrukcji wyboru i tabel tymczasowych.

Chcę go zapętlić, aby działał 2000 razy z rzędu i nie widzi żadnej alternatywy niż naciśnięcie klawisza F5 2000 razy.

Czy istnieje odpowiednik Oracle SQL zawijania kodu do makra SAS i zapętlenia go 2000 razy?

+2

Oracle ma pętlę 'FOR', podobnie jak większość języków programowania. Sprawdź dokumenty lub [tutaj] (https://www.techonthenet.com/oracle/loops/for_loop.php). –

+3

@EdGibbs - Oracle SQL nie jest "językiem programowania" w sposób, w jaki masz na myśli. Nie ma pętli FOR w ogóle w SQL, aw szczególności w Oracle. Zamiast tego, Oracle, podobnie jak inne bazy danych, ma ściśle zintegrowany język proceduralny, PL/SQL. Twój link do dokumentacji odnosi się do pętli FOR w języku PL/SQL, a nie do Oracle SQL. – mathguy

+0

Czego szukałeś? Właśnie szukałem w Google hasła "zawijam Oracle SQL w skrypcie SAS" iz tego co wiem, są dostępne rozwiązania dla osób, które rozumieją SAS. – mathguy

Odpowiedz

2

PL/SQL anonimowy blok jest najlepszy w tej sytuacji:

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

można podjąć próbę przekształcenia sprawozdań wstawić do czystego SQL ?. Jest to najszybsze i najczystsze podejście do ładowania wielu danych.

Po skonfigurowaniu generowanie wierszy może być wykonane przez kartezjańskie tworzenie zestawu wyników.

Np Say początkowo tabela zawiera następujące

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

Pragnę wygenerować zawartość tabeli 3 razy to bym wykonać następujące czynności

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; 

To daje następujący wynik

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 
Powiązane problemy