Inserir registros de forma Dinamicamente

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
bruno.pereira
Rank: Estagiário Júnior
Rank: Estagiário Júnior
Mensagens: 2
Registrado em: Qui, 13 Jun 2019 9:36 am

Boa tarde! sou estudante na área de banco de dados.. Estou com dificuldade num problema.. queria ajuda!! :D

Tenho essa tabela e preciso criar um bloco pl/sql que carrega 1000 registro de forma dinamicamente.. não sei por onde começar..

Selecionar tudo

CREATE TABLE DB_TESTE.TBL_CLIENTE (
            SEQ_CLIENTE INTEGER PRIMARY KEY,
            NOME VARCHAR2(50),
            SOBRENOME VARCHAR2(50),
            IDADE INTEGER,
            SEXO CHAR(1),
) TABLESPACE USERS;
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

O que você quer dizer com "carregar 1000 registros dinamicamente" ?
bruno.pereira
Rank: Estagiário Júnior
Rank: Estagiário Júnior
Mensagens: 2
Registrado em: Qui, 13 Jun 2019 9:36 am

dr_gori escreveu:O que você quer dizer com "carregar 1000 registros dinamicamente" ?
Por exemplo o campo nome quero adicionar 4 nomes Paulo, Ricardo, Joao, Maria no intervalo de 10 em 10 ate chegar 1000 registro .. to verificando a questão do loop .. más estou meio confuso...
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Dá pra fazer isso de várias formas.
Inclusive dá pra fazer isso direto num SQL, sem usar PLSQL :-D

Mas como você está se quebrando pra fazer, eu vou postar abaixo um exemplo BEM BASICO.
Não to usando nenhuma otimização nem melhores técnicas pra resolver esse problema.
(Talvez depois eu coloco outras formas melhores).

Selecionar tudo

declare 
  vnome varchar2(100);
  vmod  number;
begin
  for x in 1..1000
  loop
    vmod := mod(x,4);
    if    vmod = 1 then vnome:='PAULO'; 
    elsif vmod = 2 then vnome:='RICARDO'; 
    elsif vmod = 3 then vnome:='JOAO';
    elsif vmod = 0 then vnome:='MARIA';
    end if;
  
    --INSERT INTO...vai aqui..  VNOME conttem o nome que você quer.
    
    --Commita de 10 em 10.
    if mod(x,10)=0 
    then commit;
    end if;
  end loop;
  
  commit; 
end; 
Existem várias técnicas pra ser usadas nisso.
Por exemplo, BULK collection, arrays, apenas SQL.
Mas essas coisas não vem ao caso por agora.
Responder
  • Informação
  • Quem está online

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