ejecutar expresion

07/04/2005 - 01:51 por William Contreras | Informe spam
Hola
Necesito obtener el valor de una expresion algebraica que tengo almacenada
en una variable
ejemplo en @variable tengo '1+2+3 ' entonces lo que necesito es obtener un 5
que tiene que ser numerico
Espero haberme explicado y que me puedaa ayudar

Preguntas similare

Leer las respuestas

#1 Víctor
07/04/2005 - 12:32 | Informe spam
Supongo que habrá más formas, pero esta que te servirá.
Si sabes el número de sumandos, mejor que mejor que asegurarnos una slida
del WHILE

DECLARE @tbl_sumandos table
(
sumando tinyint
)

SET @variable = @variable + '+'
SET @resultado smallint

WHILE (len(@variable) > 1)
BEGIN
SET @pos = charindex ('+', @variable)

INSERT INTO @tbl_sumandos VALUE (left(@variable, @pos - 1)
SET @variable= SUBSTRING (@variable, @pos + 1, len(@variable) - @pos)
END

SET @resultado = 0
SELECT @resultado = SUM(sumando) FROM @tbl_sumandos

"William Contreras" escribió en el mensaje
news:
Hola
Necesito obtener el valor de una expresion algebraica que tengo almacenada
en una variable
ejemplo en @variable tengo '1+2+3 ' entonces lo que necesito es obtener un


5
que tiene que ser numerico
Espero haberme explicado y que me puedaa ayudar


Respuesta Responder a este mensaje
#2 Carlos Sacristán
07/04/2005 - 12:57 | Informe spam
SQL Server te posibilita ejecutar sentencias dinámicamente a través de
sp_executesql pasándole parámetros. Estos parámetros pueden ser de entrada y
de salida, y aprovechando estas posibilidades y modificando un poco la forma
que tienes de almacenar las expresiones, podemos conseguir lo que necesitas.
Mira este ejemplo:

******************************************

DECLARE @expr NVARCHAR(50), @valor VARCHAR(15), @salida VARCHAR(10)
SET @valor ='1+2+3'
/* Para poder ejecutar la expresión, debemos formatearla a algo que entienda
el gestor de la base de datos. Le añadimos por tanto la palabra "SELECT" y
como además queremos recoger el resultado, se lo asignamos a la variable
"@salida"
*/
SET @expr='SELECT @salida=(' + @valor + ')'

/* Puedes echar un vistazo a los BOL para conocer la sintaxis, pero en
definitiva lo que hacemos es pasarle la expresión a ejecutar como primer
parámetro, declaramos el parámetro de salida y se lo asignamos a la variable
que hemos declarado
*/
EXEC sp_executesql @expr, N'@salida VARCHAR(10) OUTPUT', @salida = @salida
OUTPUT

SELECT @salida salida


******************************************


Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)

"William Contreras" escribió en el mensaje
news:
Hola
Necesito obtener el valor de una expresion algebraica que tengo almacenada
en una variable
ejemplo en @variable tengo '1+2+3 ' entonces lo que necesito es obtener un


5
que tiene que ser numerico
Espero haberme explicado y que me puedaa ayudar


Respuesta Responder a este mensaje
#3 William Contreras
07/04/2005 - 22:11 | Informe spam
gracias por todo probe lo que me dijeron y todo me funciona correctamente
saluddos william contreras
"Carlos Sacristán" <csacristanARROBAmvpsPUNTOorg> escribió en el mensaje
news:#
SQL Server te posibilita ejecutar sentencias dinámicamente a través de
sp_executesql pasándole parámetros. Estos parámetros pueden ser de entrada


y
de salida, y aprovechando estas posibilidades y modificando un poco la


forma
que tienes de almacenar las expresiones, podemos conseguir lo que


necesitas.
Mira este ejemplo:

******************************************

DECLARE @expr NVARCHAR(50), @valor VARCHAR(15), @salida VARCHAR(10)
SET @valor ='1+2+3'
/* Para poder ejecutar la expresión, debemos formatearla a algo que


entienda
el gestor de la base de datos. Le añadimos por tanto la palabra "SELECT" y
como además queremos recoger el resultado, se lo asignamos a la variable
"@salida"
*/
SET @expr='SELECT @salida=(' + @valor + ')'

/* Puedes echar un vistazo a los BOL para conocer la sintaxis, pero en
definitiva lo que hacemos es pasarle la expresión a ejecutar como primer
parámetro, declaramos el parámetro de salida y se lo asignamos a la


variable
que hemos declarado
*/
EXEC sp_executesql @expr, N'@salida VARCHAR(10) OUTPUT', @salida @salida
OUTPUT

SELECT @salida salida


******************************************


Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)

"William Contreras" escribió en el mensaje
news:
> Hola
> Necesito obtener el valor de una expresion algebraica que tengo


almacenada
> en una variable
> ejemplo en @variable tengo '1+2+3 ' entonces lo que necesito es obtener


un
5
> que tiene que ser numerico
> Espero haberme explicado y que me puedaa ayudar
>
>


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida