Reutilizacion de valores de funciones en select | SQL Server Performance Forums

SQL Server Performance Forum – Threads Archive

Reutilizacion de valores de funciones en select

Es posible reutilizar el valor devuelto por una funcion en una sentencia de selecion sin usar de nuevo la misma funcion en dado caso de que necesite este valor para otros calculos Creo que la pregunta es clara, pero para ilustrarlo mejor alli un ejemplo:
select
dbo.FuncionX(Valo_Coti,1000),
dbo.FuncionY(dbo.FuncionX(Valo_Coti,1000))
from cotizacion Este caso es muy similar o igual al caso en que se declara una variable y en el select se le asigna un valore y alli mismo se intenta recuperar el valor de las variables. Obviamente no se puee entender un select como si de un ciclo se tratase. Creo que lo normal es usar un cursor para hacer esto, pero el presente ejemplo es muy sencillo y aplicarlo a la situacion real resultara sumamente lento de ejecutar por el diseño de las tablas y o quiero saber si ahy otra forma que no sea por cursores. Ayudaria mucho que el TSQL tuviera caracteristicas de los lenguajes de programacion para aplicaciones para caclular el valor de una vez y usarlo para el procesamiento posterior en otros lados. No se si con el C embebido o ahora con las caracteristicas de ADO.Net y SQL Server 2005 haya mas cohesion entre el tipo de codigo para programar aplicaciones y el de base de datos, tal como lo maneja FoxPro.

Las mismas consideraciones que el otro post.
Luis Martin
Moderator
SQL-Server-Performance.com All in Love is Fair
Stevie Wonder
All postings are provided “AS IS” with no warranties for accuracy.
No creo que puedas nestear funciones. Puedes asignar un valor devuelto por una función a la variable y usar esa variable en la función. Example: Declare @i bigint
select Top 1 @i=
dbo.FuncionX(Valo_Coti,1000),
from cotizacion select
dbo.FuncionY(@i)
from cotizacion
Madhivanan Luis Martin
Moderator
SQL-Server-Performance.com All in Love is Fair
Stevie Wonder
All postings are provided “AS IS” with no warranties for accuracy.
O mejor, select X, dbo.FuncionY(x, 1000)
FROM
(select
dbo.FuncionX(Valo_Coti,1000) as X
from cotizacion) T
Luis Martin
Moderator
SQL-Server-Performance.com All in Love is Fair
Stevie Wonder
All postings are provided “AS IS” with no warranties for accuracy.
]]>