none
sintansis incorrecta en un dato bit RRS feed

  • 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
    GO

    pero 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

    martes, 26 de junio de 2012 22:03

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

    Some guidelines for posting questions...

    • Marcado como respuesta yohana2588 miércoles, 27 de junio de 2012 17:09
    miércoles, 27 de junio de 2012 13:07

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
    martes, 26 de junio de 2012 22:28
  • 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

    Some guidelines for posting questions...

    • Marcado como respuesta yohana2588 miércoles, 27 de junio de 2012 17:09
    miércoles, 27 de junio de 2012 13:07
  • hola  hunchback

    gracias por La explicacion y La respuesta fue muy bien aceptad.


    nini yohana bermuidez

    miércoles, 27 de junio de 2012 17:11