Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » PostgreSQL »

Problemas con una función con CASE

Estas en el tema de Problemas con una función con CASE en el foro de PostgreSQL en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 29/09/2010, 21:18
 
Fecha de Ingreso: abril-2009
Mensajes: 3
Antigüedad: 15 años, 8 meses
Puntos: 0
Problemas con una función con CASE

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..

Etiquetas: case
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:14.