Я не смог воспроизвести вашу ошибку, но одна проблема состоит в том, что CM.CUSTOMER
не может быть одновременно таблицей и последовательностью.
Как правило, рекомендуется не жестко кодировать имена схем, если вы на самом деле не имеетек.Я бы предпочел не указывать здесь имя схемы и просто запустить его из учетной записи CM
.
Я создал последовательность с именем customer_seq
, и следующие операции выполняются без ошибок:
create table customer
( id number primary key
, first_name varchar2(20)
, last_name varchar2(20)
, status number );
create sequence customer_seq;
declare
status varchar(10) := '10';
loop_size number := 10;
begin
while loop_size > 0
loop
insert into customer (id, first_name, last_name, status)
values (customer_seq.nextval, 'Jhon', 'Jhon', status);
loop_size := loop_size -1;
end loop;
end;
/
При использовании Oracle 12.1 или более поздней версии я предпочел бы использовать столбец идентификации и остановить микроуправляемые последовательности,Вам также не нужно самостоятельно управлять индексом цикла, поскольку PL / SQL имеет удобную конструкцию цикла for
:
create table customer
( id number generated always as identity primary key
, first_name varchar2(20)
, last_name varchar2(20)
, status number );
declare
status varchar(10) := '10';
loop_size number := 10;
begin
for i in 1..loop_size loop
insert into customer (first_name, last_name, status )
values ('Jhon', 'Jhon', status);
end loop;
end;
/