Fórum Funcao com erro estranho #26630
21/11/2006
0
Tenho uma funcao em pgsql que executa dentro do PGManager e dentro da minha aplicacao delphi ela nao executa, ou melhor, executa sem erros e nao grava noo banco de dados... alguem tem ideia do que pode estar ocorrendo? Uso delphi+zeos para acesso, e uso um TZQuery dando um select na funcao e passando os parametros que sao necessários...
Nota: na funcao eu criei como retorno de funcao todos os campos que necessito pra incluir na tabela, e note que em ambos os casos no delphi e no PgManager o retorno é identico!!!!
Estranho né??? Alguem tem alguma ideia???
abaixo a funcao:
Nota: na funcao eu criei como retorno de funcao todos os campos que necessito pra incluir na tabela, e note que em ambos os casos no delphi e no PgManager o retorno é identico!!!!
Estranho né??? Alguem tem alguma ideia???
abaixo a funcao:
DECLARE IdCliente ALIAS FOR $1; PerIni ALIAS FOR $2; PerFim ALIAS FOR $3; Valor ALIAS FOR $4; ValorMinimoFatura NUMERIC; ValorAcumuladoFatura NUMERIC; ValorFinalFatura NUMERIC; DataMinima DATE; Resultado VARCHAR; Sequencia INTEGER; Num_Fat VARCHAR; Vcto DATE; Obs VARCHAR; ClienteCodigo INTEGER; respif VARCHAR; BEGIN -- Resultado Resultado := ´´; -- Variavel para guardar o valor final da fatura ValorFinalFatura := Valor; -- Pega o valor minimo de faturas, assim poderá gravar em outra -- tabela de faturamento SELECT INTO ValorMinimoFatura x.valor_minimo_fatura_cliente FROM aux.valores_padrao_sistema x; IF ValorMinimoFatura IS NULL THEN ValorMinimoFatura := 0; END IF; -- Pega o valor acumulado de faturas que nao chegaram ao valor minimo SELECT INTO ValorAcumuladoFatura SUM(fm.fat_valor) FROM fat.fatura_min fm WHERE (fm.cli_codigo = IdCliente); IF ValorAcumuladoFatura IS NULL THEN ValorAcumuladoFatura := 0; END IF; -- Só preciso da data se houver valor acumulado IF ValorAcumuladoFatura > 0 THEN -- Atualiza o valor final da fatura ValorFinalFatura := ValorFinalFatura + ValorAcumuladoFatura; -- Pega o inicio do periodo da fatura SELECT INTO DataMinima MIN(fm.fat_per_inicial) FROM fat.fatura_min fm WHERE (fm.cli_codigo = IdCliente); Obs := ´FATURA ACUMULADA COBRADA DESDE O PERÍODO ´ || CAST(DataMinima as VARCHAR); END IF; -- Grava no banco de dados Num_Fat := fat.fnc_gera_numero_fatura(IdCliente); Vcto := fat.fnc_gera_vcto_fatura(IdCliente); IF ValorFinalFatura >= ValorMinimoFatura THEN Sequencia := NEXTVAL(´fat.seq_fatura´); INSERT INTO fat.fatura(fat_sequencia, fat_fatura, cli_codigo, fat_vencimento, fat_emissao, fat_per_inicial, fat_per_final, fat_valor) VALUES(Sequencia, Num_Fat, IdCliente, Vcto, CURRENT_DATE, PerIni, PerFim, ValorFinalFatura); respif := ´entrou no if´; ELSE Sequencia := NEXTVAL(´fat.seq_fatura_min´); INSERT INTO fat.fatura_min(fat_sequencia, fat_fatura, cli_codigo, fat_vencimento, fat_emissao, fat_per_inicial, fat_per_final, fat_valor, fat_obs) VALUES(Sequencia, Num_Fat, IdCliente, Vcto, CURRENT_DATE, PerIni, PerFim, ValorFinalFatura, Obs); respif := ´entrou no else´; END IF; Resultado := ´Cod.Cliente: ´ || CAST(IdCliente AS VARCHAR) || ´ - ´ || ´Fatura: ´ || num_fat || ´ - ´ || ´Vcto: ´ || CAST(Vcto AS VARCHAR) || ´ - ´ || ´Valor: ´ || TO_CHAR(ValorFinalFatura, ´999,999.99´) || ´ - ´ || ´Valor Min: ´ || TO_CHAR(ValorMinimoFatura, ´999,999.99´) || ´ - ´ || ´IF: ´ || respif ; RETURN Resultado; END;
Tuskinhu
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)