此存储过程中的语法错误,怎么了?

时间:2018-12-08 21:55:40

标签: stored-procedures syntax-error

我正在尝试编写一个存储过程,该存储过程应仅将数据插入表中以用于0到350范围内的记录。

它获取两个整数作为参数

CREATE PROCEDURE SP_MesaEnRango
    (@nroMesa INT,
     @cantidadVotantes INT)
AS
BEGIN 
    IF @nroMesa IS NOT NULL OR @cantidadVotantes IS NOT NULL OR
       @cantidadVotantes < 0 OR @cantidadVotantes > 350
    BEGIN 
        DECLARE @errorMessage NVARCHAR(50);

        BEGIN TRANSACTION;
        BEGIN TRY
            INSERT INTO Mesas (nroMesa, cantidadVotantes)
            VALUES (@nroMesa, @cantidadVotantes);
        END TRY
        BEGIN CATCH
            SET @errorMessage = 'ERROR';

            IF @@TRANCOUNT > 0
            BEGIN 
                ROLLBACK TRANSACTION;
            END;
        END CATCH;

        IF @@TRANCOUNT > 0
        BEGIN 
            COMMIT TRANSACTION;
        END;
    END;

我在';'附近收到语法错误

1 个答案:

答案 0 :(得分:0)

您最终会缺少END来完成过程正文。如果您一致地缩进并保持BEGINEND对齐,则发现这些问题的时间会更容易。这是代码的重新格式化版本,其中添加了缺少的END

CREATE PROCEDURE SP_MesaEnRango
    (@nroMesa int,
    @cantidadVotantes int)
AS
BEGIN
    IF @nroMesa IS NOT NULL OR
        @cantidadVotantes IS NOT NULL OR
        @cantidadVotantes < 0 OR
        @cantidadVotantes > 350
    BEGIN
        DECLARE @errorMessage nvarchar(50);

        BEGIN TRANSACTION;

        BEGIN TRY
            INSERT INTO Mesas (nroMesa,cantidadVotantes)
            VALUES (@nroMesa,@cantidadVotantes);
        END TRY

        BEGIN CATCH
            SET @errorMessage = 'ERROR';
            IF @@TRANCOUNT > 0
            BEGIN 
                ROLLBACK TRANSACTION;
            END
        END CATCH

        IF @@TRANCOUNT > 0
        BEGIN 
            COMMIT TRANSACTION;
        END
    END
END