Pular para o conteúdo
  • Este tópico contém 1 resposta, 2 vozes e foi atualizado pela última vez 16 anos, 3 meses atrás por Avatar photoLeonardo Litz.
Visualizando 2 posts - 1 até 2 (de 2 do total)
  • Autor
    Posts
  • #91598
    Anônimo

      Pessoal tenho uma problema,
      Aqui temos um Sistema, que eu gerencio, construido na arquitetura WEB,
      ou seja os usários de todos o brasil o acessam via browse. O Banco
      é oracle. A opção foi a construção de Procedures PLSQL, com o
      java scritp para fazer as validações e a interface gráfica
      formulários HTML. Na realidade esses elementos fazem parte da
      própria procedure. Isso é compilado lá no banco que dispara os
      procedimentos quando é requisitado. A empresa que construiu e dava
      manutenção deixou de fazer. Então como já tinha experiência
      em clipper, delphi etc e tinha o curso de analista de sistema, embora
      ainda sem prática, resolvi encarar a parada. Busquei informações
      em apostilas, livros, internet e conseguimos entender o funcionamento
      das procedures, mas como não fiz um curso específico sobre o
      assunto, de vez em quando tenho alguns “desafios” que preciso superar.
      Até já consguir uma solução parcial, mas que não resolve o
      problema quando envolve uma grande quantidade de dados ( acima de 32K ) .
      Veja o problema:
      O objetivo da procedure é fazer um select em uma tabela, apresentar
      esses dados ao usuário, via table HTML. O usuário altera esses
      dados no HTML. A seguir tenho que gravar as alterações no Banco. Se
      fosse apenas um registro seria fácil, pois já fiz várias
      procedures desse tipo. É que são N registros, ou seja depende da
      quantidade retornada pelo select ( que é um cursor ) São apenas
      dois campos ——
      o problema é quando faço o submit. Só conseguia gravar um
      registro. Então um colega nos ensinou que em vez de enviar ( submit )
      para a própria procedure, fazer uma chamada de outra procedure
      passando os dados em forma de array da seguinte forma:

      A
      exclamação significa que os dados são passados em forma de array
      para a procedure. A procedure 3069t recebe da seguinte forma :
      create or replace procedure scic3069t(
      num_entries IN NUMBER, name_array IN OWA.VC_ARR,value_array IN
      OWA.VC_ARR, reserved IN OWA.VC_ARR
      ) is
      v_nova_taxa number;
      v_id number;
      v_liberado number;

      W_CT INTEGER:=0;
      begin

      BEGIN
      FOR i IN 1..num_entries LOOP
      IF name_array (i) = ‘p_nova_taxa’ THEN v_nova_taxa :=
      value_array (i);
      elsif name_array (i) = ‘p_id’ THEN v_id := value_array
      (i);
      elsif name_array (i) = ‘p_liberado’ THEN v_liberado :=
      value_array (i);
      end if;
      update custos.orca_over
      set custos.orca_over.taxa=v_nova_taxa,
      custos.orca_over.liberado=v_liberado
      where custos.orca_over.orca_over_id=v_id;
      commit;

      END LOOP;
      end;

      end;

      Quando a lista é muito grande ao executar a procedure o oracle dar
      um erro informando que a quantidade é muito grande. Pesquisando na
      doc. oracle verifiquei que na realidade isso funciona para quantidades
      de até 32k ( vejam nesse endereço).
      http://download.oracle.com/docs/cd/B104 … oncept.htm
      <http://http://download.oracle.com/docs/cd/B10464_05/web.904/b10357/conc
      ept.htm>
      É por essa limitação, acredito eu, que a procedure tem horas que
      não funciona. Acho que é porque excede a essa quantidade.
      Então, pergunto : Existe algum jeito de resolver essa limitação ?
      o que devo fazer ?
      espero que nos ajudem a resolver esse problema, que pode ser também
      de outros colegas.

      #91606
      Avatar photoLeonardo Litz
      Participante

        Olá ACoelho

        Sobre PL/WEB, já trabalhei em uma empresa que utilizava esta tecnologia.
        Esta limitação realmente existe. Lá resolvemos isso com AJAX, quando o usuário clicava no CHECKBOX disparava um AJAX que já atualizava o registro. Funcionava como estivesse submentendo registro a registro.

        Vlw Leonardo Litz

      Visualizando 2 posts - 1 até 2 (de 2 do total)
      • Você deve fazer login para responder a este tópico.