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

OverFlow no PostgreSQL

Recommended Posts

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Visitante
Responder

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Processando...

×
×
  • Criar Novo...