PROCEDURE DE INSERÇÃO

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
alexmaquina
Rank: Estagiário Júnior
Rank: Estagiário Júnior
Mensagens: 2
Registrado em: Ter, 10 Mai 2016 4:10 pm

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á !!!
spernega
Rank: DBA Pleno
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 ( ....);
alexmaquina
Rank: Estagiário Júnior
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.
spernega
Rank: DBA Pleno
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.
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 7 visitantes