Каков правильный синтаксис IF ELSE в SQL-сервере? - Предотвращение дублирования в столбце с 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 возвращает 0, если значение повторяется в таблице)
проблема в том, что я получаю ошибку в ELSE, говоря, что синтаксис неправильный. Может кто-нибудь сказать мне, что является ошибкой, или есть ли другой способ предотвратить дублирование при выполнении INSERT?
1 ответ
Решение
Ваш 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
Это, однако, не мешает кому-то вставлять данные вручную. Вы можете рассмотреть возможность добавления уникального индекса в вашу таблицу.