Error en Funcion

08/04/2005 - 17:16 por Daniel Sauco | Informe spam
tengo esta funcion la cual me da error la funcion GETDATE()
el error es 443: invalid useof 'getdate' within a function.

si me pueden dicir que estoy haciendo mal

esta funcion me calcula la edad de una persona, en la cual yo le paso como
parametro la fecha de nacimiento

Gracias

CREATE FUNCTION [dbo].[CalEdad]
(@Fecha [datetime])
RETURNS tinyint AS
BEGIN
declare @Edad [tinyint]
declare @FechaActual [datetime]

set @FechaActual = Getdate()

set @Edad = (DateDiff(month, @Fecha, @FechaActual) / 12)

RETURN @Edad
END
 

Leer las respuestas

#1 Don Roque
08/04/2005 - 17:24 | Informe spam
El problema que estas teniendo se debe a que por una cuestion de
performance el SQL SERVER limita las user defined functions, haciendo
que sean DETERMINISTICAS *

Tenes dos maneras de resolverlo. Una, estandar, haces que la funcion
reciba por parametro una fecha mas; y luego, donde llamas a la funcion
le pasas la fecha que entrega como resultado el GETDATE. Ahora, si no
queres agregar el parametro, hay otra manera de que lo puedas hacer.
Crea una vista con el siguiente SCRIPT


CREATE VIEW CURDATE
as
select getdate() as FechaAhora

Luego, en la funcion, obtenes la fecha que te entregue la vista y
procesas.

Espero que te sirva. Saludos



* Se dice que una funcion es DETERMINISTICA cuando al ser llamada con
los mismos parametros, siempre entrega el mismo resultado. Por
consiguiente, si vos dentro de tu User Defined Function usas funciones
como GETDATE o RAND el compilador de SQL SERVER no te va a dejar
crearlas, por este mismo tema.

Preguntas similares