Если какой-либо один из следующих условий, я хочу код, чтобы перейти к следующему шагу выполнения:Использование вложенных IF ELSE заявления в SQL
- Имя, Фамилия и DOB: все три не являются пустой
- ID и DOB не является пустой
- ПНУЛИ и DOB не является пустым
- ID и номер группы не являются пустым
Ниже приведен код, у меня есть. Когда я запускаю его, предоставляя имя, фамилию и ДОБ (условие 1 выполнено), оно все равно не работает, так как условие 4 не выполняется. Может ли кто-нибудь сказать мне, что я делаю неправильно?
IF ((@FirstName IS NULL
OR Len(Ltrim(@FirstName)) = 0)
AND (@LastName IS NULL
OR Len(Ltrim(@LastName)) = 0)
AND (@DOB IS NULL))
BEGIN
INSERT INTO @ValidationError
(errormessage)
VALUES ('first name, last name and Date of Birth must be specified.'
)
END
ELSE
BEGIN
IF (@DOB IS NULL
AND @Id IS NULL)
BEGIN
INSERT INTO @ValidationError
(errormessage)
VALUES ('Date of Birth and Id must be specified.')
END
ELSE
BEGIN
IF (@DOB IS NULL
AND @SSN IS NULL)
BEGIN
INSERT INTO @ValidationError
(errormessage)
VALUES ('Date of Birth and SSN must be specified.')
END
ELSE
BEGIN
IF (@Id IS NULL
AND @GroupNumber IS NULL)
BEGIN
INSERT INTO @ValidationError
(errormessage)
VALUES ('Id and Group Number must be specified.')
END
END
END
END
Я попытался следующие два варианта ответа ниже, но не может работать это. Вместо этого я обновляю параметр для каждой вставки в таблице @ValidationError, а затем использую метку GOTO, если параметр не обновляется (что означало бы, что ничего не было вставлено в таблицу). GOTO - это старая привычка, которую я только что вспомнил, с дней программирования FORTRAN. –