Pular para o conteúdo
  • Este tópico contém 2 respostas, 3 vozes e foi atualizado pela última vez 10 anos, 4 meses atrás por Avatar de Fábio PradoFábio Prado.
Visualizando 3 posts - 1 até 3 (de 3 do total)
  • Autor
    Posts
  • #106745
    Avatar de Tadeu Rodrigues de OliveiraTadeu Rodrigues de Oliveira
    Participante

      Meus caros, boa tarde.
      Estou com o seguinte problema.
      Tenho uma procedure que executa um insert em uma tabela temporária e para isso utilizo uma query dinamica em função dos parâmetros necessários.
      Ao tentar executar a procedure ela me apresentou a seguinte mensagem de erro:

      ORA-06502-PL/SQL: ERRO: character string buffer to small numerico ou de valor.
      ORA-06512: em “SYS_DBMS_OUTPUT”, line 151
      ORA-06512: em line 2

      Segue abaixo o código que estou tentando rodar para ver se algum dos colegas consegue me ajudar.


      create or replace procedure mgcli.al_p_posmov_locarm
      (
      comp_st_nome varchar2,
      usu_in_codigo number,
      fil_in_codigo number,
      alm_in_codigo number,
      dt_movimento_i date,
      dt_movimento_f date
      ) is

      v_comp_st_nome varchar2(255) := comp_st_nome;
      v_usu_in_codigo number(5,0) := usu_in_codigo;
      v_fil_in_codigo number(7,0) := fil_in_codigo;
      v_org_tab_in_codigo number(3,0);
      v_org_pad_in_codigo number(3,0);
      v_org_in_codigo number(7,0);
      v_alm_in_codigo number(6,0) := alm_in_codigo;
      v_alm_st_almoxar varchar2(100);
      v_loc_in_codigo number(6,0);
      v_loc_st_nome varchar(100);
      v_pro_in_codigo number(7,0);
      v_pro_st_descricao varchar2(100);
      v_saldo_anterior number(15,3);
      v_saldo_anterior_fardos number(9,0);
      v_quantidade_entrada number(15,3);
      v_quantidade_saida number(15,3);
      v_quantidade_saida_devolucao number(15,3);
      v_qtd_fardos_entrada number(9,0);
      v_qtd_fardos_saida number(9,0);
      v_qtd_fardos_saida_devolucao number(9,0);
      v_saldo_atual number(15,3);
      v_saldo_atual_fardos number(9,0);
      v_peso_medio_entradas number(9,3);
      v_qtd_fardos_saida_x_pmentrada number(9,0);
      v_saldo_fardos_x_pm number(9,0);
      v_dt_movimento_i date := dt_movimento_i;
      v_dt_movimento_f date := dt_movimento_f;
      v_SQL clob;
      begin
      delete from mgcli.al_tb_rel_posmov_locarm d
      where d.comp_st_nome = v_comp_st_nome
      and d.usu_in_codigo = v_usu_in_codigo
      and d.fil_in_codigo = v_fil_in_codigo;

      commit;

      v_SQL := '';
      v_SQL := 'insert into mgcli.al_tb_rel_posmov_locarm m
      (
      m.comp_st_nome, m.usu_in_codigo,
      m.org_tab_in_codigo, m.org_pad_in_codigo,
      m.org_in_codigo, m.fil_in_codigo,
      m.alm_in_codigo, m.alm_st_almoxar,
      m.loc_in_codigo, m.loc_st_nome,
      m.pro_in_codigo, m.pro_st_descricao,
      m.saldo_anterior, m.saldo_anterior_fardos,
      m.quantidade_entrada, m.quantidade_saida,
      m.quantidade_saida_devolucao, m.qtd_fardos_entrada,
      m.qtd_fardos_saida, m.qtd_fardos_saida_devolucao,
      m.saldo_atual, m.saldo_atual_fardos,
      m.peso_medio_entradas, m.qtd_fardos_saida_x_pm_entrada,
      m.saldo_fardos_x_pm
      )
      select distinct
      v_comp_st_nome, v_usu_in_codigo, l.org_tab_in_codigo, l.org_pad_in_codigo,
      l.org_in_codigo, l.fil_in_codigo, l.alm_in_codigo, a.alm_st_almoxar,
      l.loc_in_codigo, b.loc_st_nome, m.pro_in_codigo, p.pro_st_descricao,
      0 as saldo_anterior, 0 as saldo_anterior_fardos,
      sum(case when m.mvt_st_entrsaida = ' || '''ED''' || ' then l.mvl_re_quantidade else 0 end) as quantidade_entrada,
      sum(
      case when m.mvt_st_entrsaida = ' || '''SD''' || '
      and t.tpm_in_codigo not in (
      select i.tpm_in_codigo
      from mgadm.est_tipomovto i
      where (
      (i.tpm_st_descricao like ' || '''%Devol%''' || ' and i.tpm_st_descricao like ' || '''%compra%''' || ')
      )
      ) then l.mvl_re_quantidade
      else 0 end
      ) as quantidade_saida,
      sum(
      case when m.mvt_st_entrsaida = ' || '''SD''' || '
      and t.tpm_in_codigo in (
      select i.tpm_in_codigo
      from mgadm.est_tipomovto i
      where (
      (i.tpm_st_descricao like ' || '''%Devol%''' || ' and i.tpm_st_descricao like ' || '''%compra%''' || ')
      )
      ) then l.mvl_re_quantidade
      else 0 end
      ) as quantidade_saida_devolucao,
      sum(
      case when m.mvt_st_entrsaida = ' || '''ED''' || ' then
      case when cast(mgadm.adm_pck_estoque.f_retornacarac(l.mvl_st_referencia,1,1) as number) is null then 0
      else cast(mgadm.adm_pck_estoque.f_retornacarac(l.mvl_st_referencia,1,1) as number) end
      else 0
      end
      ) as qtd_fardos_entradas,
      sum(
      case when m.mvt_st_entrsaida = ' || '''SD''' || ' then
      case when cast(mgadm.adm_pck_estoque.f_retornacarac(l.mvl_st_referencia,1,1) as number) is null then 0
      else cast(mgadm.adm_pck_estoque.f_retornacarac(l.mvl_st_referencia,1,1) as number) end
      else 0
      end
      ) as qtd_fardos_saidas,

      sum(
      case when m.mvt_st_entrsaida = ' || '''SD''' || ' and t.tpm_in_codigo in (
      select i.tpm_in_codigo
      from mgadm.est_tipomovto i
      where (
      (i.tpm_st_descricao like ' || '''%Devol%''' || ' and i.tpm_st_descricao like ' || '''%compra%''' ||')
      )
      ) then
      case when cast(mgadm.adm_pck_estoque.f_retornacarac(l.mvl_st_referencia,1,1) as number) is null then 0
      else cast(mgadm.adm_pck_estoque.f_retornacarac(l.mvl_st_referencia,1,1) as number) end
      else 0 end
      ) as qtd_fardos_saida_devolucao,
      sum(0) as saldo_atual, sum(0) as saldo_atual_fardos,
      sum(0) as peso_medio_entradas,
      sum(0) as qtd_fardos_saida_x_pm_entrada,
      sum(0) as saldo_fardos_x_pm
      from mgadm.est_lotesmovimento l,
      mgadm.est_movimento m,
      mgadm.est_produtos p,
      mgadm.est_almoxarifado a,
      mgadm.est_almoxlocal b,
      mgadm.est_tipomovto t
      where m.org_tab_in_codigo = l.org_tab_in_codigo
      and m.org_pad_in_codigo = l.org_pad_in_codigo
      and m.org_in_codigo = l.org_in_codigo
      and m.org_tau_st_codigo = l.org_tau_st_codigo
      and m.ser_tab_in_codigo = l.ser_tab_in_codigo
      and m.ser_in_sequencia = l.ser_in_sequencia
      and m.mvt_in_lancam = l.mvt_in_lancam
      and m.tpm_tab_in_codigo = t.tpm_tab_in_codigo (+)
      and m.tpm_pad_in_codigo = t.tpm_pad_in_codigo (+)
      and m.tpm_in_codigo = t.tpm_in_codigo (+)
      and p.pro_tab_in_codigo = l.pro_tab_in_codigo
      and p.pro_pad_in_codigo = l.pro_pad_in_codigo
      and p.pro_in_codigo = l.pro_in_codigo
      and a.alm_tab_in_codigo = b.alm_tab_in_codigo (+)
      and a.alm_pad_in_codigo = b.alm_pad_in_codigo (+)
      and a.alm_in_codigo = b.alm_in_codigo (+)
      and b.alm_tab_in_codigo = l.alm_tab_in_codigo (+)
      and b.alm_pad_in_codigo = l.alm_pad_in_codigo (+)
      and b.alm_in_codigo = l.alm_in_codigo (+)
      and b.loc_in_codigo = l.loc_in_codigo (+) ';

      if (v_fil_in_codigo <> 0) then
      begin
      v_SQL := v_SQL || 'and l.fil_in_codigo = ''' || v_fil_in_codigo || ''' ';
      end;
      end if;

      if (v_alm_in_codigo <> 0) then
      begin
      v_SQL := v_SQL || 'and l.alm_in_codigo = ''' || v_alm_in_codigo || ''' ';
      end;
      end if;

      v_SQL := v_SQL ||
      ' and l.mvt_dt_movimento >= ''' || to_char(v_dt_movimento_i) || ''' ' || '
      and l.mvt_dt_movimento <= ''' || to_char(v_dt_movimento_f) || ''' ' || ' and t.tpm_in_codigo in ( select tpm_in_codigo from mgadm.est_tipomovto t where t.tpm_ch_qtdeobrigatoria = ' || '''S''' || ' ) and t.tpm_in_codigo in ( ( select i.tpm_in_codigo from mgadm.est_tipomovto i where ( (i.tpm_st_descricao like ' || '''%Transf%''' || ') or (i.tpm_st_descricao like ' || '''%TRANSF%''' || ') or (i.tpm_st_descricao like ' || '''%transf%''' || ') ) ) union select distinct tpm_in_codigo from mgadm.est_tipomovto t where t.tpm_ch_qtdeobrigatoria = ' || '''S''' || ' and t.tpm_in_codigo in ( select i.tpm_in_codigo from mgadm.est_tipomovto i where ( (i.tpm_st_descricao like ' || '''%Devol%''' || ' and i.tpm_st_descricao like ' || '''%compra%''' || ') ) ) ) group by ''' || v_comp_st_nome || ''', ' || v_usu_in_codigo || ', l.org_tab_in_codigo, l.org_pad_in_codigo, l.org_in_codigo, l.fil_in_codigo, l.alm_in_codigo, a.alm_st_almoxar, l.loc_in_codigo, b.loc_st_nome, m.pro_in_codigo, p.pro_st_descricao, 0, 0 order by l.fil_in_codigo, l.alm_in_codigo, l.loc_in_codigo, m.pro_in_codigo;'; end;

      #106746
      Avatar de rmanrman
      Participante

        @Tadeu Rodrigues de Oliveira

        Geralmente esse erro acontece quando você ultrapassa o valor máximo do buffer do DBMS_OUTPUT.PUT_LINE. Mas estranho que você não está usando esse procedimento no seu SOURCE.

        #106752
        Avatar de Fábio PradoFábio Prado
        Participante

          Tadeu,

          O código desta procedure parece não estar completo. Você tem um código enorme p/ preencher a var V_SQL e não faz nada com ela no final do código? Estranho! Para que possamos te ajudar passe o código completo.

          []s

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