Ir para conteúdo
Fórum CódigoFonte.net

mltmaster

Membros
  • Total de itens

    1
  • Registro em

  • Última visita

  1. mltmaster

    OverFlow no PostgreSQL

    Olá Galera, tudo bem, tenho uma function que atualiza meus fornecedores, so que quando ela é chamada para atualização ocorre um erro de overflow, o seguinte erro é: ERROR: numeric field overflow DETAIL: The absolute value is greater than or equal to 10^1 for field with precision 1, scale 0. CONTEXT: PL/pgSQL function "f_atualiza_grava_fornecedores_pf" line 31 at select into variables Chamada da função: select f_atualiza_grava_fornecedores_pf(20,'PF','000.000.000-00','JOÃO DA SILVA','00.000.000-00','R: JOÃO DIAS GIMENES, 100','VILA TAL','19.000-000','NÃO TEM',9,'000000000','000000',999999,'O','O MESMO',2,'00','00000000','FR'); Função: create or replace function f_atualiza_grava_fornecedores_pf (pessoas.pes_cod%type, pessoas.pes_tipo%type, pfisicas.pf_cpf%type, pfisicas.pf_nome%type, pfisicas.pf_rg%type, pfisicas.pf_endereco%type, pfisicas.pf_bairro%type, pfisicas.pf_cep%type, pfisicas.pf_email%type, cidades.cid_cod%type, fornecedores.cc_num%type, fornecedores.age_num%type, fornecedores.banc_num%type, fornecedores.forn_tipo%type, fornecedores.forn_contato%type, telefones.tptel_cod%type, telefones.tel_ddd%type, telefones.tel_num%type, pessoas.pes_id%type) returns numeric as ' declare p_pes_cod alias for $1; p_pes_tipo alias for $2; p_pf_cpf alias for $3; p_pf_nome alias for $4; p_pf_rg alias for $5; p_pf_endereco alias for $6; p_pf_bairro alias for $7; p_pf_cep alias for $8; p_pf_email alias for $9; p_cid_cod alias for $10; p_cc_num alias for $11; p_age_num alias for $12; p_banc_num alias for $13; p_forn_tipo alias for $14; p_forn_contato alias for $15; p_tptel_cod alias for $16; p_tel_ddd alias for $17; p_tel_num alias for $18; p_pes_id alias for $19; pessoa numeric(10); ct numeric(1); num numeric(1); c numeric(1); fornecedor numeric(10); begin begin select count(*) into ct from pfisicas pf, pessoas ps where pf.pf_cpf = p_pf_cpf and pf.pes_cod = p_pes_cod and ps.pes_id = ''FR''; if (ct <> 0) then update pfisicas set cid_cod = p_cid_cod, pf_nome = p_pf_nome, pf_rg = p_pf_rg, pf_endereco = p_pf_endereco, pf_bairro = p_pf_bairro, pf_cep = p_pf_cep, pf_email = p_pf_email where pes_cod = p_pes_cod and pf_cpf = p_pf_cpf; c := 2; if (c = 2) then select forn_cod into fornecedor from fornecedores where pes_cod = p_pes_cod; update fornecedores set cc_num = p_cc_num, age_num = p_age_num, banc_num = p_banc_num, forn_tipo = p_forn_tipo, forn_contato = p_forn_contato where pes_cod = p_pes_cod and forn_cod = fornecedor; c := 2; else c := 6; end if; if (c = 2) then update telefones set tel_ddd = p_tel_ddd, tel_num = p_tel_num, tptel_cod = p_tptel_cod where pes_cod = p_pes_cod; c := 2; else c := 6; end if; if (c = 2) then num := 2; else num := 6; end if; end if; Exception When unique_violation then num := 3; When integrity_constraint_violation then num := 4; When others then num := 5; end; return num; end; ' language 'plpgsql'; Obrigado Pessoal, espero resposta.
×
×
  • Criar Novo...