Principales respuestas
sintansis incorrecta en un dato bit

Pregunta
-
hola a todos,
tengo el siguiente stored procedured, y me genera un error que se losy a copiar en la parte inferior.
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
ALTER PROCEDURE OPConCompraExterna
@idop int,
@anular bit
AS
declare @idopcompra as int,@idcompra as int
set @idopcompra = (select count(idop)from compraExternaOpSub where idop = @idop)
set @idcompra = (select count(idop)from compraExternaOpS where idop = @idop)
IF @idopcompra > 0
@anular = 0
else @idopcompra = 0
@anular = 1
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GOpero me esta generando el siguiente error,
Server: Msg 170, Level 15, State 1, Procedure OPConCompraExterna, Line 20
Line 20: Incorrect syntax near '@anular'.nini yohana bermuidez
Respuestas
-
Seria de ayuda que nos dijeras, con palabras, la logica que quieres seguir. Noto lo sgte:
- Cuentas para probar existencia, cosa que no es necesario.
- Declaras dos variables, @idopcompra y @idcompra, pero solo usas una en el resto del sp.
- El parametro @anular, es un parametro de entrada pero estas cambiando su valor sin importar el valor que se le pasa en la llamada del sp.
SET QUOTED_IDENTIFIER ON GO SET ANSI_NULLS ON GO ALTER PROCEDURE dbo.OPConCompraExterna @idop int, @anular bit AS SET NOCOUNT ON; --declare @idopcompra as int,@idcompra as int --set @idopcompra = (select count(idop)from compraExternaOpSub where idop = @idop) --set @idcompra = (select count(idop)from compraExternaOpS where idop = @idop) --IF @idopcompra > 0 -- @anular = 0 --else @idopcompra = 0 -- @anular = 1 IF EXISTS (select * from compraExternaOpSub where idop = @idop) SET @anular = 0; ELSE SET @anular = 1; GO
AMB
- Marcado como respuesta yohana2588 miércoles, 27 de junio de 2012 17:09
Todas las respuestas
-
Hola. Antes de @anular pon SET para que te quede "SET @anular".
Ahora bien, si ese es un dato a retornar revisa porque debes calificar el parámetro como de salida...
Saludos,
Guillermo Taylor F.
IT Pro & Xbox gamer
My blog- Propuesto como respuesta HunchbackMVP miércoles, 27 de junio de 2012 13:07
-
Seria de ayuda que nos dijeras, con palabras, la logica que quieres seguir. Noto lo sgte:
- Cuentas para probar existencia, cosa que no es necesario.
- Declaras dos variables, @idopcompra y @idcompra, pero solo usas una en el resto del sp.
- El parametro @anular, es un parametro de entrada pero estas cambiando su valor sin importar el valor que se le pasa en la llamada del sp.
SET QUOTED_IDENTIFIER ON GO SET ANSI_NULLS ON GO ALTER PROCEDURE dbo.OPConCompraExterna @idop int, @anular bit AS SET NOCOUNT ON; --declare @idopcompra as int,@idcompra as int --set @idopcompra = (select count(idop)from compraExternaOpSub where idop = @idop) --set @idcompra = (select count(idop)from compraExternaOpS where idop = @idop) --IF @idopcompra > 0 -- @anular = 0 --else @idopcompra = 0 -- @anular = 1 IF EXISTS (select * from compraExternaOpSub where idop = @idop) SET @anular = 0; ELSE SET @anular = 1; GO
AMB
- Marcado como respuesta yohana2588 miércoles, 27 de junio de 2012 17:09
-