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

Mostrar la cita
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:
Mostrar la cita
abajo.
Mostrar la cita
esperada. Es lo siguiente:
Mostrar la cita
devuelto lo almaceno en V_IND1 de salida
Mostrar la cita
al if y cambia el valor de la variable V_IGUAL
Mostrar la cita

Preguntas similares