T-Sql Da error en sentencia CASE

22/02/2007 - 11:14 por Paul | Informe spam
Hola,

Estoy haciendo un procedimiento almacenado, donde quiero utilizar la
sentencia CASE pero siempre me da error.

FETCH NEXT FROM Actualitzacions INTO @id1, @id2
WHILE @@FETCH_STATUS = 0
BEGIN
CASE
WHEN @id1 = null AND @id2 = null
THEN @id3=0
WHEN @id1 = null AND @id2 != null
THEN @id3=1
WHEN @id1 != null AND @id2 = null
THEN @id3=2
ELSE @id3=3
END

FETCH NEXT FROM Actualitzacions INTO @id1, @id2
END

Que estoy haciendo mal?

Gracias

Preguntas similare

Leer las respuestas

#1 Carlos M. Calvelo
22/02/2007 - 12:23 | Informe spam
On 22 feb, 11:14, "Paul" wrote:
Hola,



Hola,


Estoy haciendo un procedimiento almacenado, donde quiero utilizar la
sentencia CASE pero siempre me da error.

FETCH NEXT FROM Actualitzacions INTO @id1, @id2
WHILE @@FETCH_STATUS = 0
BEGIN
CASE
WHEN @id1 = null AND @id2 = null
THEN @id3=0
WHEN @id1 = null AND @id2 != null
THEN @id3=1
WHEN @id1 != null AND @id2 = null
THEN @id3=2
ELSE @id3=3
END

FETCH NEXT FROM Actualitzacions INTO @id1, @id2
END

Que estoy haciendo mal?




Varias cosas:
1. el CASE es una expresión con resultado (una función)
(SET @id3 = CASE ... END)
2. variables o atributos no se comparan con null con el '=' sino con
IS NULL, IS NOT NULL.
3. no es que esté mal pero el CASE que has expuesto se puede
simplificar


SET @id3 = CASE
WHEN @id1 IS null AND @id2 IS null
THEN 0
WHEN @id1 IS null
THEN 1
WHEN @id2 IS null
THEN 2
ELSE 3
END

o quizás lo siguiente te dé otras ideas para p.e. evitar el cursor:

SELECT id1,
id2,
CASE WHEN id1 IS null AND id2 IS null THEN 0
WHEN id1 IS null THEN 1
WHEN id2 IS null THEN 2
ELSE 3
END AS id3
FROM Actualizations

Saludos,
Carlos
Respuesta Responder a este mensaje
#2 Eduardo Castro
22/02/2007 - 15:03 | Informe spam
Tienes que usar is null

Slds,

Eduardo Castro
Costa Rica
"Paul" wrote in message
news:
Hola,

Estoy haciendo un procedimiento almacenado, donde quiero utilizar la
sentencia CASE pero siempre me da error.

FETCH NEXT FROM Actualitzacions INTO @id1, @id2
WHILE @@FETCH_STATUS = 0
BEGIN
CASE
WHEN @id1 = null AND @id2 = null
THEN @id3=0
WHEN @id1 = null AND @id2 != null
THEN @id3=1
WHEN @id1 != null AND @id2 = null
THEN @id3=2
ELSE @id3=3
END

FETCH NEXT FROM Actualitzacions INTO @id1, @id2
END

Que estoy haciendo mal?

Gracias

Respuesta Responder a este mensaje
#3 Maxi
23/02/2007 - 03:12 | Informe spam
Hola, porque haces un cursor? que estas haciendo con ese cursor?


Saludos

[Microsoft MVP SQL Server]
SQLTOTALConsulting - Servicios y consultoria de SQLServer
www.sqlgurus.org
Buenos Aires - Argentina
http://msmvps.com/blogs/maxiaccotto/
"Paul" wrote in message
news:
Hola,

Estoy haciendo un procedimiento almacenado, donde quiero utilizar la
sentencia CASE pero siempre me da error.

FETCH NEXT FROM Actualitzacions INTO @id1, @id2
WHILE @@FETCH_STATUS = 0
BEGIN
CASE
WHEN @id1 = null AND @id2 = null
THEN @id3=0
WHEN @id1 = null AND @id2 != null
THEN @id3=1
WHEN @id1 != null AND @id2 = null
THEN @id3=2
ELSE @id3=3
END

FETCH NEXT FROM Actualitzacions INTO @id1, @id2
END

Que estoy haciendo mal?

Gracias

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