SQL 服务器中正确的 IF ELSE 语法是什么? - 使用 SP 防止列中的重复
What is the correct IF ELSE syntax in SQL server? - Preventing Duplications in a Column with SP
我必须防止列重复,所以我制作了这个存储过程
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.UnicoApellido returns 0 如果值在table中重复)
这里的问题是我在 ELSE 中遇到错误,说语法错误。
谁能告诉我错误是什么,或者在执行 INSERT 时是否有其他方法来防止重复?
您的 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
但是,这并不能阻止有人手动插入数据。您可能需要考虑向 table 添加唯一索引。
我必须防止列重复,所以我制作了这个存储过程
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.UnicoApellido returns 0 如果值在table中重复)
这里的问题是我在 ELSE 中遇到错误,说语法错误。 谁能告诉我错误是什么,或者在执行 INSERT 时是否有其他方法来防止重复?
您的 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
但是,这并不能阻止有人手动插入数据。您可能需要考虑向 table 添加唯一索引。