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
 

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

Preguntas similares