If o case en un UDF

15/09/2005 - 19:44 por Matías | Informe spam
Hola a todos, tengo un udf que recibe entre uno se sus parámetros un campo
de tipo fecha, pero esta fecha puede ser NULL, entonces debo preguntar si la
fecha pasada es NULL debe tomar la fecha actual, probe con algo asi pero no
funca:

create function dbo.udf1 (
@Fecha datetime
)
returns varchar(50)
as
begin

IF @Fecha IS NULL
@Fecha = GetDate() --aqui me salta un error de uso no valido de GetDate

return @s
end
go

Como puedo hacer? probe con CASE pero me salta el mismo error.
Saludos y mil gracias..
por las dudas: SQL2000 SP3
 

Leer las respuestas

#1 Alejandro Mesa
15/09/2005 - 20:08 | Informe spam
Matías,

No se puede referenciar una function no determinista (como getdate() que da
un valor distinto cada vez que se llamam con los mismos paraametros) dentro
de una udf. La primera opcion es usar un tercer parametro donde pases
getdate() y la otra es crear una vista desde done puedas seleccionar getdate()

Ejemplo:

use northwind
go

create view dbo.vw_now
as
select getdate() as now
go

create function dbo.f1 (
@now datetime
)
returns table
as
return (select @now as parametro_funcion, now as valor_vista from dbo.vw_now)
go

declare @now datetime

set @now = getdate()

select *
from dbo.f1(@now)
go

drop function dbo.f1
go

drop view dbo.vw_now
go


AMB



"Matías" wrote:

Hola a todos, tengo un udf que recibe entre uno se sus parámetros un campo
de tipo fecha, pero esta fecha puede ser NULL, entonces debo preguntar si la
fecha pasada es NULL debe tomar la fecha actual, probe con algo asi pero no
funca:

create function dbo.udf1 (
@Fecha datetime
)
returns varchar(50)
as
begin

IF @Fecha IS NULL
@Fecha = GetDate() --aqui me salta un error de uso no valido de GetDate

return @s
end
go

Como puedo hacer? probe con CASE pero me salta el mismo error.
Saludos y mil gracias..
por las dudas: SQL2000 SP3



Preguntas similares