2016-11-11 3 views
5

Я создал большую часть скрипта, которая вставляет новые строки в самом конце в мою целевую таблицу.Запуск большого скрипта SQL Oracle в цикле

Сценарий содержит множество операторов выбора и промежуточных таблиц.

Я хочу, чтобы цикл его запускал 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. Ссылка на документацию связана с циклом FOR в PL/SQL, а не с Oracle SQL. – mathguy

+0

Что вы искали? Я просто Googled для «обертывания Oracle SQL в скрипте SAS», и из того, что я могу сказать, есть решения, предлагаемые для людей, которые понимают 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 
Смежные вопросы