首页 文章

这个存储过程中的语法错误,有什么问题?

提问于
浏览
0

我正在尝试编写一个存储过程,该存储过程应该仅为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

    您在最后缺少 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
    

相关问题