代码之家  ›  专栏  ›  技术社区  ›  waroxx

SQL server中正确的IF-ELSE语法是什么?-使用SP防止列中的重复

  •  1
  • waroxx  · 技术社区  · 7 年前

    我必须防止列重复,所以我制作了这个存储过程

    CREATE PROCEDURE [dbo].Agregar_Personal
        @nom varchar(20),
        @apll varchar(20),
        @tel int,
        @dep int,
        @sal float
    AS
    IF dbo.UnicoApellido(@apll) = 0
        INSERT INTO Personal (Nombre,Apellido,Telefono,Departamento,Salario)
        VALUES (@nom,@apll,@tel,@dep,@sal)  
        RETURN 0;
    ELSE    
        RETURN 1;
    

    (如果该值在表中重复,则函数dbo.unicapellido返回0)

    这里的问题是,我在ELSE中得到了一个错误,说语法是错误的。 谁能告诉我错误是什么,或者在执行插入时是否有其他方法可以防止重复?

    1 回复  |  直到 7 年前
        1
  •  1
  •   Thom A    7 年前

    你的 IF ELSE 需要一个 BEGIN END ,因此您的SQL需要是:

    CREATE PROCEDURE [dbo].Agregar_Personal
        @nom varchar(20),
        @apll varchar(20),
        @tel int,
        @dep int,
        @sal float
    AS
        IF dbo.UnicoApellido(@apll) = 0 BEGIN
            INSERT INTO Personal (Nombre,Apellido,Telefono,Departamento,Salario)
            VALUES (@nom,@apll,@tel,@dep,@sal)  
            RETURN 0;
        END ELSE BEGIN
            RETURN 1;
        END
    GO
    

    然而,这并不能阻止有人手动插入数据。您可能需要考虑将唯一索引添加到表中。