Boa tarde amigos !
Estou com um problema para criar uma procedure de inserção de 100.000 linhas.
Segue os codigos:
create table tab_alex_01(
nomecli varchar2(30),
cpf number(11),
endereco varchar2(30),
vendas number(13,2),
codcli number(5) primary key,
data_nasc date,
status varchar2(20),
valor_nota number(13,2),
emissao_nota date )
create sequence sequencia_tab_alex01 start with 40;
declare
contador integer;
v_vendas number(13,2):=10.00;
begin
contador := 1;
while contador <= 100000 loop
insert into tab_alex_01 values ('joao','22222222222','rua B'
,v_vendas,100.00,
sequencia_tab_alex01.nextval,
sysdate,10,'A',1000.00,sysdate);
contador := contador + 1;
v_vendas:= v_vendas + 10.00;
end loop;
commit;
end;
/
A procedure retornar o erro:
Relatório de erros -
ORA-06550: linha 7, coluna 13:
PL/SQL: ORA-00913: valores demais
ORA-06550: linha 7, coluna 1:
PL/SQL: SQL Statement ignored
06550. 00000 - "line %s, column %s:\n%s"
*Cause: Usually a PL/SQL compilation error.
*Action:
Poderiam me ajudar?
Obrigado desde já !!!
PROCEDURE DE INSERÇÃO
-
- Rank: Estagiário Júnior
- Mensagens: 2
- Registrado em: Ter, 10 Mai 2016 4:10 pm
-
- Rank: DBA Pleno
- Mensagens: 232
- Registrado em: Ter, 19 Jun 2007 2:12 pm
- Localização: São Paulo - SP
Boa tarde,
Você esta inserindo mais campos do que existe na tabela.
nomecli, cpf, endereco, vendas, codcli, data_nasc, status, valor_nota, emissao_nota
9 campos
'joao','22222222222','rua B',v_vendas,100.00,sequencia_tab_alex01.nextval, sysdate,10,'A',1000.00,sysdate
11 campos
Quando fizer o insert, tente especificar os campos antes, fica mais fácil de visualizar.
insert into tab_alex_01 (nomecli, cpf, endereco, vendas, codcli, data_nasc, status, valor_nota, emissao_nota date)
values ( ....);
Você esta inserindo mais campos do que existe na tabela.
nomecli, cpf, endereco, vendas, codcli, data_nasc, status, valor_nota, emissao_nota
9 campos
'joao','22222222222','rua B',v_vendas,100.00,sequencia_tab_alex01.nextval, sysdate,10,'A',1000.00,sysdate
11 campos
Quando fizer o insert, tente especificar os campos antes, fica mais fácil de visualizar.
insert into tab_alex_01 (nomecli, cpf, endereco, vendas, codcli, data_nasc, status, valor_nota, emissao_nota date)
values ( ....);
-
- Rank: Estagiário Júnior
- Mensagens: 2
- Registrado em: Ter, 10 Mai 2016 4:10 pm
Você conseguiu executar esse exemplo que eu coloquei ?
Por que já fiz o que você falou e continuou apresentando erro. Fiz o insert declarativo, arrumei os campos e o erro persistia.
Por que já fiz o que você falou e continuou apresentando erro. Fiz o insert declarativo, arrumei os campos e o erro persistia.
-
- Rank: DBA Pleno
- Mensagens: 232
- Registrado em: Ter, 19 Jun 2007 2:12 pm
- Localização: São Paulo - SP
Você reduziu a quantidade de informações no values() ?
Aparentemente as informação a mais são:
100.00 e 10.00
nomecli => 'joao'
cpf => '22222222222'
endereco => 'rua B'
vendas => v_vendas
?????? 100.00
codcli => sequencia_tab_alex01.nextval
data_nasc => sysdate
?????? 10
status => 'A'
valor_nota => 1000.00
emissao_nota => sysdate
Tirando estes campos funciona, apesar que num determinado momento vai dar erro.
reduza o seu loop para 100, para testar.
Estoura pelo menos o codcli, que no 100000 ficaria com seis posições.
Aparentemente as informação a mais são:
100.00 e 10.00
nomecli => 'joao'
cpf => '22222222222'
endereco => 'rua B'
vendas => v_vendas
?????? 100.00
codcli => sequencia_tab_alex01.nextval
data_nasc => sysdate
?????? 10
status => 'A'
valor_nota => 1000.00
emissao_nota => sysdate
Tirando estes campos funciona, apesar que num determinado momento vai dar erro.
reduza o seu loop para 100, para testar.
Estoura pelo menos o codcli, que no 100000 ficaria com seis posições.
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante