Hola a todos..
Tengo problemas con una función donde utilizo CASE, no se qué es lo que está mal.
El error es: syntax error at or near "case"..
Lo podría hacer con un If, pero quisiera saber cual es el problema.
La función es:
CREATE OR REPLACE FUNCTION dba.calcula_porcentaje_cober_forzada(IN tipo_cober character varying, IN imp_cober_hon numeric, IN imp_cober_gasto numeric, IN cantidad_practica numeric, IN importe numeric, IN iva numeric, IN item character varying, OUT cober_total numeric, OUT no_cober_total numeric)
RETURNS record AS
$BODY$declare valor_forzado numeric(10,2);
valor_total numeric(10,2);
begin
case item
when 'Honorarios' then valor_forzado :=imp_cober_hon ;
when 'Ayudante 1' then valor_forzado :=imp_cober_hon ;
when 'Ayudante 2' then valor_forzado :=imp_cober_hon ;
when 'Ayudante 3' then valor_forzado :=imp_cober_hon ;
when 'Anestesista' then valor_forzado :=imp_cober_hon ;
when 'Gastos' then valor_forzado :=imp_cober_gasto ;
when 'Medicamentos' then valor_forzado :=imp_cober_gasto;
end case;
valor_total := (importe+iva)*cantidad_practica;
if tipo_cober = 'POR' then
cober_total := (valor_total*valor_forzado)/100;
no_cober_total := valor_total-cober_total;
else
cober_total := valor_forzado*cantidad_practica;
no_cober_total :=valor_total-cober_total;
if no_cober_total < 0 then
no_cober_total := 0;
cober_total = valor_total;
end if;
end if;
Raise info 'Total Cubierto: %', cober_total;
Raise info 'Total NO Cubierto: %', no_cober_total;
end$BODY$
LANGUAGE 'plpgsql' VOLATILE
Gracias..