HilarYo 0 Denunciar post Postado Fevereiro 16, 2014 Boas tardes, A seguinte função é suposto dar-me a soma do valor dos registos da tabela PAGAMENTO de um determinado cliente e num determinado mês/ano: create or replace function T_PAGAMENTO_CLIENTE_ANO_MES(v_cliente IN NUMBER, v_mes_ano IN DATA) return number is total number; begin select sum(PAGAMENTO.VALOR) into total from PAGAMENTO where ID_CLIENTE = v_cliente and to_char(PAGAMENTO.DATA,'YYYY/MM'=to_char(v_mes_ano,'YYYY/MM'); return total; end; Esta dá erro nesta linha: where ID_CLIENTE = v_cliente and to_char(PAGAMENTO.DATA,'YYYY/MM'=to_char(v_mes_ano,'YYYY/MM'); e nesta: select sum(PAGAMENTO.VALOR) Alguém me consegue ajudar? Obrigado Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Fevereiro 16, 2014 where ID_CLIENTE = v_cliente and to_char(PAGAMENTO.DATA,'YYYY/MM') = to_char(v_mes_ano,'YYYY/MM'); Compartilhar este post Link para o post Compartilhar em outros sites
HilarYo 0 Denunciar post Postado Fevereiro 16, 2014 create or replace function T_PAGAMENTO_CLIENTE_ANO_MES(v_cliente IN NUMBER, v_mes_ano IN DATE) return number is total number; begin select sum(PAGAMENTO.VALOR) into total from PAGAMENTO where ID_CLIENTE = v_cliente and to_char(PAGAMENTO.DATA,'YYYY/MM') = to_char(v_mes_ano,'YYYY/MM'); return total; end; Já consegui resolver o erro, agora tenho outro problema: SELECT T_PAGAMENTO_CLIENTE_ANO_MES ('2',TO_DATE('2014/02','YYYY/MM')) from dual; Eu tenho registos na tabela PAGAMENTOS, cujo o ID_CLIENTE é 2 e o mês correspondente é 2, e não me faz a soma :( Apenas aparecem registos se for o mes anterior, o corrente não :/ T_PAGAMENTO_CLIENTE_ANO_MES('2',TO_DATE('2014/02','YYYY/MM')) ------------------------------------------------------------- deveria de aparecer 75 porque o cliente tem 3 registos de 25 e somados da 75 :( O exemplo que criei do mês passado funciona 3 registos de 30 = 90 1 rows inserted. 1 rows inserted. 1 rows inserted. T_PAGAMENTO_CLIENTE_ANO_MES('2',TO_DATE('2014/01','YYYY/MM')) ------------------------------------------------------------- 90 Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Fevereiro 16, 2014 O que retorna um sekect * na tabela para o clinte igual a 2? Compartilhar este post Link para o post Compartilhar em outros sites
HilarYo 0 Denunciar post Postado Fevereiro 17, 2014 O que retorna um sekect * na tabela para o clinte igual a 2? Ao fazer um select a tabela INSCRICOES: SELECT * FROM INSCRICAO where ID_CLIENTE =2; O Resultado foi: ID_INSCRICAO DATA ID_AULA ID_CLIENTE ------------ -------- ---------- ---------- 5 14.02.12 5 2 21 14.02.14 6 2 101 14.02.16 7 2 Como de vê o mes é 02 Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Fevereiro 17, 2014 A tabela da function é PAGAMENTO !!! Compartilhar este post Link para o post Compartilhar em outros sites