Duvida de sessão banco.

Dúvidas, dicas e truques de SQL, Select, Update, Delete, cláusulas, operações com joins, Funções em SQLs, etc
meguelito
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 60
Registrado em: Ter, 17 Jan 2006 1:45 pm
Localização: Santa Catarina
Att.:
Alan Juliano Metzger
Programador Oracle
Inside System Informática
Msn/E-mail: alanjuliano@yahoo.com.br

Boa Tarde pessoal, queria saber se tem como eu fazer assim:

insert into movimento select * from movimento;

e dai em outro Sql Plus com outra sessão ver quantos registros já foram inseridos na tabela?
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Brother,

Desde que ambas tenham a mesma quantidade (e ordem) de colunas, sim, perfeitamente.

Selecionar tudo


 INSERT INTO TESTE SELECT * FROM TAB_TESTE;

Caso contrário, corrija as colunas no lugar do "*".

qualquer coisa, manda ai.
meguelito
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 60
Registrado em: Ter, 17 Jan 2006 1:45 pm
Localização: Santa Catarina
Att.:
Alan Juliano Metzger
Programador Oracle
Inside System Informática
Msn/E-mail: alanjuliano@yahoo.com.br

Acho que você não entendeu minha pergunta.

Eu quero saber se tem como eu ver quantos registros já forma inseridos por um insert sem dar commit entendeu?
Tineks
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 365
Registrado em: Ter, 24 Mai 2005 2:24 pm
Localização: Araraquara - SP
Cristiano (Tineks)
Araraquara - SP

E ai meguelito, beleza??

q eu saiba não tem como ver o resultado de outra sessao a não ser q você commite os dados..
bem, da uma procurada na net sobre "set auto commit", não tenho certeza q vai resolver seu problema..
você não poderia montar um bloco anonimo pra fazer isso? se puder não é dificil de fazer isso q você precisa...

[]s
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Desculpa brother,

Mas, ver em outra sessão, sem commit, desconheço e, acho q não tem como fazer...
Não existe outra forma de solucionar teu problema?
O que você realmente necessita?
Raphaelbi
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 4
Registrado em: Qui, 25 Out 2007 1:35 pm
Localização: Rio de Janeiro - RJ
Raphael Porto

Não sei se isso irá dar certo, mas tenta fazer o seguinte:

Declara uma variável e a cada linha ela recbe "+1" daí você manda o PL parar quando essa variável chegar a um valor que você queira (Ex.: o valor de linhas "x" inseridas), porém não vai ver os dados que foram inseridos, só vai conseguir ver os dados depois de dar o commit.

Além disso não faço idéia.

Abraço
rogenaro
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 232
Registrado em: Sex, 30 Mar 2007 7:26 pm
Localização: Londrina - PR
Rafael O. Genaro

Dependendo do quanto você precise disso, seria possível criar uma tabela para controlar a quantidade de registros inseridos, alimentada por uma segunda função que utilize o AUTONOMOUS_TRANSACTION, para que lá dentro você possa realizar o commit da quantidade de registros, sem realizar o commit na aplicação principal.

Selecionar tudo

procedure p_atualiza_contagem (p_qtde_atual in number)
is
   pragma autonomous_transaction;
begin
   update tabela_controle set quantidade = p_qtde_atual;
   commit;
end p_atualiza_contagem;

procedure p_insere_movimento 
is
   v_qtde number := 0;
begin
   for x in
   ( select rowid rid from movimento
   ) loop
      insert into movimento 
      select * from movimento where rowid = x.rid
      ;

      v_qtde := v_qtde + 1;

      -- Só atualizar a tabela a cada n registros, para não afetar muito mais a performance...
      if (mod(v_qtde, 1000) = 0) then
         p_atualiza_contagem(v_qtde);
      end if;

   end loop;
end p_insere_movimento;


Mas é bem provável que a solução acima seja mais lenta do que a solução original... mas de qualquer forma está aí a dica.
Responder
  • Informação
  • Quem está online

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