SQL Server - Funciones en SQL-2000 (Determinísticas).

 
Vista:

Funciones en SQL-2000 (Determinísticas).

Publicado por marcelo (16 intervenciones) el 18/05/2005 13:27:52
Hola:
SQL-Server 2000, implementó funciones programables por usuario:
(create function xx...)...

Son de gran utilidad, pero un poco limitadas. Solo se pueden hacer funciones deterministicas, es decir:
a) No se pueden ejecutar operaciones IDU (Insert, Delete Update).
b) No se pueden ejecutar sp's. Ni propios ni extendidos.

El problema que tengo es que necesito en una función devolver obtener la fecha actual.

Para ser más claro:
create function ....
.....
declare @xfecha datetime
select @xfecha = getdate()
....
end
---------------------------------------------------------
Esto no se puede hacer!!!, y necesito obtener la fecha....

Alguna idea???

Desde ya muchas gracias...
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

RE:Funciones en SQL-2000 (Determinísticas).

Publicado por Liliana (151 intervenciones) el 18/05/2005 20:39:56
Hola,
Me pregunto si es necesario obtener la fecha actual desde una función, ¿no podés en el mismo código que estarías invocando la función?

Liliana.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Funciones en SQL-2000 (Determinísticas).

Publicado por marcelo (16 intervenciones) el 19/05/2005 13:04:41
Hi...
Muchas gracias por contestar...

La verdad es que no.
Yo estoy trabanando todo en el servidor...
y en el momento que ejecuto, en la cadena de llamadas es el único código activo.

Si saben algo...
Gracias...

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:Funciones en SQL-2000 (Determinísticas).

Publicado por Liliana (151 intervenciones) el 19/05/2005 13:42:14
Marcelo,
Si lo que necesitás es obtener la fecha del servidor, podés hacerlo con un simple SELECT getdate(), con eso es suficiente.
Si tu necesidad es otra, tal vez si nos contás más...
Liliana.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Funciones en SQL-2000 (Determinísticas).

Publicado por marcelo (16 intervenciones) el 19/05/2005 14:00:08
Hola Liliana:
El caso es el siguiente: (Te lo describo un poco mejor)...

Tengo un cliente JAVA, conectado con JTDS.
Se abre una pantalla con un campo:
...
Ingrese Tipo de Moneda: xxx
...
Yo tengo hecha una funcion dbo.f_get_tipoMoneda_Default()....
En el código de esta función, dependiendo de la fecha, se devuelve tipo de moneda.
Es así que dentro de la función no puedo obtener la fecha con un getdate()...
Las funciones son determinísticas... no se puede:
a) utilizar getdate()..
b) No se pueden realizar IDU (Insert delete ni update)
c) No se pueden realizar EXEC, a sp's....

si?

Muchas gracias Liliana, si sabés algo más te lo agradeceré.

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:Funciones en SQL-2000 (Determinísticas).

Publicado por Liliana (151 intervenciones) el 19/05/2005 14:42:07
Marcelo,
lo que podés hacer es pasar a la función una variable que tenga la fecha del servidor, te muestro una función de cálculo de edad, para lo que se necesita GETDATE(), espero que te sirva de ejemplo:

-- el SP
ALTER proc proc_lee_persona
as
select doc, nombre,
calcularedad(fecha_nacimiento, getdate())
from persona

-- La función
ALTER function calcularedad (@fecha varchar(10), @getdate datetime) returns smallint
as
begin

declare @edad smallint

select @edad = case when substring(@fecha, 1, 2) between '01' and '31' and
substring(@fecha, 3, 2) between '01' and '12'
then case when (substring(@fecha, 3, 2) > MONTH(@getdate)) or
(substring(@fecha, 3, 2) = MONTH(@getdate) and substring(@fecha, 1, 2) > DAY(@getdate))
then year(@getdate) - substring(@fecha, 5, 4) - 1
else year(@getdate) - substring(@fecha, 5, 4) end
else 0 end

return @edad
end
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Funciones en SQL-2000 (Determinísticas).

Publicado por marcelo (16 intervenciones) el 20/05/2005 13:08:24
Muchísimas gracias Liliana:
Me diste una excelente idea!!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar