Continua resolver formula...!

04/05/2004 - 22:46 por AlejoR | Informe spam
Hola Grup
Necesitaba hacer la evaluacion como hice en la pregunta de un post mas abajo.
Hice una prequeña prueba pero no se porque no recibo la respuesta esperada. Es lo siguiente

DECLARE @V_EXESQL NVARCHAR(1000
DECLARE @V_IGUAL VARCHAR(2
DECLARE @V_IND1 NUMERI

SELECT @V_IGUAL = 'AA
SELECT @V_EXESQL = 'SELECT CASE WHEN (1+2)>1 THEN 1 ELSE 0 END
EXECUTE SP_EXECUTESQL @V_EXESQL, N'@V_IND1 NUMERIC OUTPUT', @V_IND1 OUTPU
PRINT @V_IND

IF @V_IND1 = 1 BEGI
SELECT @V_IGUAL = 'BB'
EN
PRINT @V_IGUA

Se supone que 1+2 da 3, 3>1 si entonces la ejecucion devuelve 1. El valor devuelto lo almaceno en V_IND1 de salid
cuando hace el print no muestra nada. Pregunto si es 1 para ver si entra al if y cambia el valor de la variable V_IGUA
pero nome muestra siempre A

(1 row(s) affected


A

Que tengo mal que no logro verlo claramente...
Gracias!!!
 

Leer las respuestas

#1 Adrian D. Garcia
05/05/2004 - 11:15 | Informe spam
El problema esta en las lineas

SELECT @V_EXESQL = 'SELECT CASE WHEN (1+2)>1 THEN 1 ELSE 0 END'
EXECUTE SP_EXECUTESQL @V_EXESQL, N'@V_IND1 NUMERIC OUTPUT', @V_IND1 OUTPUT



Estas asumiendo que el resultado del select 'SELECT CASE WHEN (1+2)>1 THEN 1
ELSE 0 END' automaticamente se asignara a la variable de salida @V_IND1 y no
es asi. Tal cual lo haz codificado el resultado que obtienes en la variable
es NULL ya que no se esta realizando ninguna asignacion durante la ejecucion
del SP_EXECUTESQL.

Para que funcione lo que quieres hacer cambia la sentencia:
SELECT @V_EXESQL = 'SELECT CASE WHEN (1+2)>1 THEN 1 ELSE 0 END'
a
SELECT @V_EXESQL = 'SELECT @V_IND1 = CASE WHEN (1+2)>1 THEN 1 ELSE 0 END'

Ahora si estas asignado el resultado a la variable y obtendras 'BB' como
resultado.

Saludos

Adrian D. Garcia
NDSoft
MCSD
"AlejoR" escribió en el mensaje
news:
Hola Grupo
Necesitaba hacer la evaluacion como hice en la pregunta de un post mas


abajo.
Hice una prequeña prueba pero no se porque no recibo la respuesta


esperada. Es lo siguiente:

DECLARE @V_EXESQL NVARCHAR(1000)
DECLARE @V_IGUAL VARCHAR(2)
DECLARE @V_IND1 NUMERIC

SELECT @V_IGUAL = 'AA'
SELECT @V_EXESQL = 'SELECT CASE WHEN (1+2)>1 THEN 1 ELSE 0 END'
EXECUTE SP_EXECUTESQL @V_EXESQL, N'@V_IND1 NUMERIC OUTPUT', @V_IND1 OUTPUT
PRINT @V_IND1

IF @V_IND1 = 1 BEGIN
SELECT @V_IGUAL = 'BB'
END
PRINT @V_IGUAL

Se supone que 1+2 da 3, 3>1 si entonces la ejecucion devuelve 1. El valor


devuelto lo almaceno en V_IND1 de salida
cuando hace el print no muestra nada. Pregunto si es 1 para ver si entra


al if y cambia el valor de la variable V_IGUAL
pero nome muestra siempre AA


(1 row(s) affected)


AA

Que tengo mal que no logro verlo claramente
Gracias!!!

Preguntas similares