Guardar un valor temporal dentro de una FUNCTION

11/10/2011 - 08:14 por Leonardo Alonzo | Informe spam
Que tal Sres.

Lo que intento hacer es crear una FUNCTION, pasarle unos valores del
registro, efectuar unos calculos ahi y que me devuelva un valor. Hasta
aqui todo bien, pero lo que necesito es guardar ese valor para que el
siguiente registro en leer la function pueda utilizar este valor ya
calculado y asi sucesivamente. He analizado algunos puntos y no logro
dar con el resultado.
- No puedo utilizar sentencias DML en tablas y temporales dentro de
una UDF
- No puedo llamar a un Store Procedure dentro de una UDF, para que
haga el trabajo, pero esto no esta permitido, salvo que sea extendido
y esto lo complica todo
- Lo unico permitido hasta ahora es utilizar variables de tipo table y
usar DML, pero estas solo existen en el ambito de la function, asi que
cuando sale de la function ya no existe tal variable.
- He intentado hacer el mismo trabajo en un SP utilizando cursores
pero el tiempo de demora es insostenible ya que el volumen a procesar
es inmenso.

No me queda otra que recurrir a uds, a ver si alguien tiene una
solucion ó alguna idea.

Utilizo SQL SERVER 2000

Gracias.
 

Leer las respuestas

#1 Richard García
11/10/2011 - 15:27 | Informe spam
On 11 oct, 02:14, Leonardo Alonzo wrote:
Que tal Sres.

Lo que intento hacer es crear una FUNCTION, pasarle unos valores del
registro, efectuar unos calculos ahi y que me devuelva un valor. Hasta
aqui todo bien, pero lo que necesito es guardar ese valor para que el
siguiente registro en leer la function pueda utilizar este valor ya
calculado y asi sucesivamente. He analizado algunos puntos y no logro
dar con el resultado.
- No puedo utilizar sentencias DML en tablas y temporales dentro de
una UDF
- No puedo llamar a un Store Procedure dentro de una UDF, para que
haga el trabajo, pero  esto no esta permitido, salvo que sea extendido
y esto lo complica todo
- Lo unico permitido hasta ahora es utilizar variables de tipo table y
usar DML, pero estas solo existen en el ambito de la function, asi que
cuando sale de la function ya no existe tal variable.
- He intentado hacer el mismo trabajo en un SP utilizando cursores
pero el tiempo de demora es insostenible ya que el volumen a procesar
es inmenso.

No me queda otra que recurrir a uds, a ver si alguien tiene una
solucion ó alguna idea.

Utilizo SQL SERVER 2000

Gracias.



Hola Leonardo, por lo visto a contemplado muchas posibilidades.

Lo único que se me ocurre es que declare un nuevo parámetro en la
función y dentro de un SP llamar la función con un valor inicial de 0
o NULL para el nuevo parámetro en la primera llamada de la función. Lo
siguiente es hacer que la función retorne el valor que necesita
reutilizar y en el SP que llama la función tomar este valor retornado
y comenzar a mandarlo en la función con el nuevo parámetro previamente
declarado.

Debe modificar la función para que cuando reciba el nuevo parámetro en
0 o NULL solo consulte y retorne el valor a reutilizar, y si el nuevo
parámetro tiene un valor válido debe cambiar la lógica para que
trabaje con este.

Espero haberme hecho entender y espero que le sirva de algo esta idea.

Cualquier cosa me informa.

Preguntas similares