Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

[MCR]Hammerfall

Procedure PostreSQL 'pgplsql'

Recommended Posts

Senhores, estou com problemas em fazer calculos entre parâmetros e dados contidos nas colunas de uma tabela, não sei como referenciá-los da forma correta, já li uma porrada de materiais e não achei nada que me ajudasse, segue os exemplos:Esta procedure está funcionando OKcreate or replace function subtempo(date) returns integer as'declarete1 alias for $1;hoje date:=current_date;resultado integer;beginresultado:=abs(date(hoje)-date(te1));return resultado;end;'language plpgsql;Mas esta que referencia valores da coluna da tabela, não estácalculo=# select *from pagar; nome | vencimento | valor | id_nome--------+------------+-------+--------- Paulo | 2004-12-10 | 250 | Pedro | 2005-01-10 | 250 | Jose | 2005-02-10 | 250 | Alex | 2005-04-10 | 250 | Carlos | 2005-05-10 | 250 | Daniel | 2005-06-10 | 250 | Edison | 2005-07-10 | 250 | Lucas | 2005-04-10 | 300 | Ivo | 2005-02-10 | 300 | Osmar | 2005-08-10 | 250 |(10 rows)-----------------------------------------------------------------create or replace function pagamento(varchar) returns integer as'declare v_nome alias for $1; e_nome pagar.nome%type; hoje date:= current_date; v_vencimento pagar.vencimento%type; resultado integer;beginif v_nome=e_nome and hoje<v_vencimento then resultado:=abs(hoje-v_vencimento)+250; return resultado; raise notice ''Multa'';elseif v_nome=e_nome and hoje>v_vencimento then resultado:=abs(hoje-v_vencimento)-20; return resultado; raise notice ''Desconto''; end if;end if;return resultado;end;'language plpgsql;Pessoal, quem conhece, dê uma força, imagino que poderá ajudar muitos usuários do PostgreSQL.[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Rapaziada, consegui descobrir, olha só como ficou...

 

-----------------------------------------------------------------

 

create or replace function pagamento(varchar) returns integer as'

declare

 

v_nome alias for $1;

e_nome pagar.nome%type;

hoje date:= current_date;

v_vencimento pagar.vencimento%type;

resultado integer;

 

begin

 

select nome into e_nome from pagar where nome=v_nome;

select vencimento into v_vencimento from pagar where nome=v_nome;

 

if v_nome=e_nome and hoje<v_vencimento then

resultado:=abs(hoje-v_vencimento)+250;

return resultado;

raise notice ''Multa'';

 

else

if v_nome=e_nome and hoje>v_vencimento then

resultado:=abs(hoje-v_vencimento)-20;

return resultado;

raise notice ''Desconto'';

end if;

end if;

return resultado;

end;

 

'language plpgsql;

 

 

calculo=# select pagamento('Paulo');

pagamento

-----------

74

(1 row)

 

calculo=# select pagamento('Osmar');

pagamento

-----------

399

(1 row) http://forum.imasters.com.br/public/style_emoticons/default/clap.gif http://forum.imasters.com.br/public/style_emoticons/default/joia.gif :D

 

Massa mesmo...

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.