IF THEN ELSE en Stored Procedure

09/01/2008 - 00:41 por Juan Linares | Informe spam
Hola comunidad, les deseo feliz año y para iniciar actividades les dejo una
pregunta q mis pocos conocimientos de SQL no alcanzan a cubrir.
Estoy haciendo un Stored Procedure para actualizar un valor dependiendo del
valor que ya exista, dicho de otro modo, si el valor del campo es 0 lo
cambiara por 1 y viceversa...

Tengo esto:

create procedure [usuario_sistemaCB].[activaCliente]
@idCliente numeric
as
IF EXISTS ( SELECT locateCte, activa FROM clientesGral WHERE
locateCte=@idCliente AND activa=0)
update clientesGral set activa=1 WHERE locateCte=@idCliente
SELECT locateCte, activa FROM clientesGral WHERE locateCte=@idCliente

ELSE
update clientesGral set activa=0 WHERE locateCte=@idCliente
SELECT locateCte, activa FROM clientesGral WHERE locateCte=@idCliente
GO

********

Me devuelve un error 156: Incorrect Syntax near keyword ELSE

No he encontrado documentacion respecto al IF THEN ELSE y su sintaxis en SP
por lo que les agradecere su ayuda para este caso q sin duda para muchos de
ustedes sera sencillisimo.

Mil gracias
juan =D

Preguntas similare

Leer las respuestas

#1 Adriana R
09/01/2008 - 01:00 | Informe spam
El problema que tienes es que te falta el begin y end
es decir
IF EXISTS ( SELECT locateCte, activa FROM clientesGral WHERE
locateCte=@idCliente AND activa=0)
Begin
update clientesGral set activa=1 WHERE locateCte=@idCliente
SELECT locateCte, activa FROM clientesGral WHERE locateCte=@idCliente
end
ELSE
Begin
update clientesGral set activa=0 WHERE locateCte=@idCliente
SELECT locateCte, activa FROM clientesGral WHERE locateCte=@idCliente
end
ya que si no lo pones solo te permite ejecutar una instrución.
o como sigue
IF EXISTS ( SELECT locateCte, activa FROM clientesGral WHERE
locateCte=@idCliente AND activa=0)
update clientesGral set activa=1 WHERE locateCte=@idCliente
ELSE
update clientesGral set activa=0 WHERE locateCte=@idCliente

SELECT locateCte, activa FROM clientesGral WHERE locateCte=@idCliente

Ya que es el mismo select no importa cual actualización esta haciendo

Saludos
GO
Respuesta Responder a este mensaje
#2 Juan Linares
09/01/2008 - 01:02 | Informe spam
Mil Gracias Adriana
paso correcto =D


"Adriana R" escribió en el mensaje
news:
El problema que tienes es que te falta el begin y end
es decir
IF EXISTS ( SELECT locateCte, activa FROM clientesGral WHERE
locateCte=@idCliente AND activa=0)
Begin
update clientesGral set activa=1 WHERE locateCte=@idCliente
SELECT locateCte, activa FROM clientesGral WHERE locateCte=@idCliente
end
ELSE
Begin
update clientesGral set activa=0 WHERE locateCte=@idCliente
SELECT locateCte, activa FROM clientesGral WHERE locateCte=@idCliente
end
ya que si no lo pones solo te permite ejecutar una instrución.
o como sigue
IF EXISTS ( SELECT locateCte, activa FROM clientesGral WHERE
locateCte=@idCliente AND activa=0)
update clientesGral set activa=1 WHERE locateCte=@idCliente
ELSE
update clientesGral set activa=0 WHERE locateCte=@idCliente

SELECT locateCte, activa FROM clientesGral WHERE locateCte=@idCliente

Ya que es el mismo select no importa cual actualización esta haciendo

Saludos
GO

Respuesta Responder a este mensaje
#3 Jesús López
09/01/2008 - 11:52 | Informe spam
En realidad no haría falta el IF..ELSE, ni leer los datos antes de
actualiar, ni leer los datos después de actualizar

UPDATE clientesGral
SET activa = (CASE activa WHEN 0 THEN 1 WHEN 1 THEN 0 END)
WHERE locateCte = @idCliente


Saludos:

Jesús López
www.solidq.com




"Juan Linares" escribió en el mensaje
news:umg%
Hola comunidad, les deseo feliz año y para iniciar actividades les dejo
una pregunta q mis pocos conocimientos de SQL no alcanzan a cubrir.
Estoy haciendo un Stored Procedure para actualizar un valor dependiendo
del valor que ya exista, dicho de otro modo, si el valor del campo es 0 lo
cambiara por 1 y viceversa...

Tengo esto:

create procedure [usuario_sistemaCB].[activaCliente]
@idCliente numeric
as
IF EXISTS ( SELECT locateCte, activa FROM clientesGral WHERE
locateCte=@idCliente AND activa=0)
update clientesGral set activa=1 WHERE locateCte=@idCliente
SELECT locateCte, activa FROM clientesGral WHERE locateCte=@idCliente

ELSE
update clientesGral set activa=0 WHERE locateCte=@idCliente
SELECT locateCte, activa FROM clientesGral WHERE locateCte=@idCliente
GO

********

Me devuelve un error 156: Incorrect Syntax near keyword ELSE

No he encontrado documentacion respecto al IF THEN ELSE y su sintaxis en
SP por lo que les agradecere su ayuda para este caso q sin duda para
muchos de ustedes sera sencillisimo.

Mil gracias
juan =D


Respuesta Responder a este mensaje
#4 Carlos Hidalgo
11/01/2008 - 17:35 | Informe spam
Wow, eso no lo sabía, pero habrás dado en el clavo de lo que buscaba este
amigo, porque si es así, se me hace una manera elegante de atacar el
problema...

Saludos

"Jesús López" escribió en el
mensaje de noticias news:
En realidad no haría falta el IF..ELSE, ni leer los datos antes de
actualiar, ni leer los datos después de actualizar

UPDATE clientesGral
SET activa = (CASE activa WHEN 0 THEN 1 WHEN 1 THEN 0 END)
WHERE locateCte = @idCliente


Saludos:

Jesús López
www.solidq.com




"Juan Linares" escribió en el mensaje
news:umg%
Hola comunidad, les deseo feliz año y para iniciar actividades les dejo
una pregunta q mis pocos conocimientos de SQL no alcanzan a cubrir.
Estoy haciendo un Stored Procedure para actualizar un valor dependiendo
del valor que ya exista, dicho de otro modo, si el valor del campo es 0
lo cambiara por 1 y viceversa...

Tengo esto:

create procedure [usuario_sistemaCB].[activaCliente]
@idCliente numeric
as
IF EXISTS ( SELECT locateCte, activa FROM clientesGral WHERE
locateCte=@idCliente AND activa=0)
update clientesGral set activa=1 WHERE locateCte=@idCliente
SELECT locateCte, activa FROM clientesGral WHERE locateCte=@idCliente

ELSE
update clientesGral set activa=0 WHERE locateCte=@idCliente
SELECT locateCte, activa FROM clientesGral WHERE locateCte=@idCliente
GO

********

Me devuelve un error 156: Incorrect Syntax near keyword ELSE

No he encontrado documentacion respecto al IF THEN ELSE y su sintaxis en
SP por lo que les agradecere su ayuda para este caso q sin duda para
muchos de ustedes sera sencillisimo.

Mil gracias
juan =D






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