我正在尝试编写一个存储过程,该存储过程应仅将数据插入表中以用于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;
我在';'附近收到语法错误
答案 0 :(得分:0)
您最终会缺少END
来完成过程正文。如果您一致地缩进并保持BEGIN
和END
对齐,则发现这些问题的时间会更容易。这是代码的重新格式化版本,其中添加了缺少的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