Problemas con funcion de fechas
Necesito una funcion que compare dos fechas y luego me retorne un valor para indicar que la fecha de inicio no sea mayor a la fecha de fin tengo este codigo:
/*comparacion de fechas*/
CREATE OR REPLACE FUNCTION fun_fecha_comp (fecha_ini date, fecha_fin date)
RETURN varchar2 IS
resultado varchar(2);
fecha1 date;
fecha2 date;
BEGIN
if(fecha1 > fecha2) then
resultado := 'NO';
else
resultado := 'SI';
end if;
return (resultado);
exception when others then
return 0;
END fun_fecha_comp;
/*comparacion de fechas*/
CREATE OR REPLACE FUNCTION fun_fecha_comp (fecha_ini date, fecha_fin date)
RETURN varchar2 IS
resultado varchar(2);
fecha1 date;
fecha2 date;
BEGIN
if(fecha1 > fecha2) then
resultado := 'NO';
else
resultado := 'SI';
end if;
return (resultado);
exception when others then
return 0;
END fun_fecha_comp;
Esa te sirve, solo que debes comparar es el valor asignado a la funcion. Es decir, cambia donde dice:
if(fecha1 > fecha2) then
En la excepcion deberias colocar un varchar, en vez de return 0
por
if(fecha_ini> fecha_fin) then
if(fecha1 > fecha2) then
En la excepcion deberias colocar un varchar, en vez de return 0
por
if(fecha_ini> fecha_fin) then
ahora se me produce un error cuando llamoa ala funcion el coddigo que poseo es:
begin
declare
in_fecha date;
fi_fecha date;
valor varchar2(2);
begin
:new.in_fecha := fecha_inicio_e;
:new.fi_fecha := fecha_fin_e;
valor :=fun_fecha_comp(in_fecha,fi_fecha);
if(valor ='NO')then
raise_application_error(-34223,'error');
end if;
end;
en que se estara produciendo el error
grax
begin
declare
in_fecha date;
fi_fecha date;
valor varchar2(2);
begin
:new.in_fecha := fecha_inicio_e;
:new.fi_fecha := fecha_fin_e;
valor :=fun_fecha_comp(in_fecha,fi_fecha);
if(valor ='NO')then
raise_application_error(-34223,'error');
end if;
end;
en que se estara produciendo el error
grax