Используйте цикл для заполнения таблицы в PL/SQL

#sql #oracle-sqldeveloper #plsqldeveloper

Вопрос:

У меня есть таблица только с одним столбцом по имени x, который является числовым типом данных. Я ищу способ заполнить эту таблицу значениями в последовательных строках, используя код, аналогичный приведенному ниже.

bcreate table sometable (x number);

 begin 
for i .. X loop 
 EXECUTE IMMEDIATE 'insert into sometable values('||i||')'; end loop; 
end; 
 

Как я могу изменить его, чтобы я мог вставлять любое количество строк, которое я установил, т. Е. 100, 500 или 1000 и т. Д.?

Комментарии:

1. Почему динамический SQL? Здесь нет ничего динамичного.

Ответ №1:

Это можно сделать без цикла:

 insert into sometable
  with xs (x) as
  (
    select LEVEL 
    from DUAL
    connect BY LEVEL <= 100
  )
  select x from xs;
 

Если вам нужно зациклиться:

 declare 
  end_loop:= 100;

begin 
for i .. end_loop loop 
 EXECUTE IMMEDIATE 'insert into sometable values('||i||')'; end loop; 
end;