当满足以下任何一个条件时,我希望代码进入下一个执行步骤:
下面是我的代码。当我通过提供名字、姓氏和出生日期(满足条件 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
Run Code Online (Sandbox Code Playgroud)
声明CASE会更简单:
INSERT INTO @ValidationError (errormessage)
SELECT CASE WHEN Criteria1 THEN 'first name, last name and Date of Birth must be specified.'
WHEN Criteria2 THEN 'Date of Birth and Id must be specified.'
WHEN Criteria3 THEN 'Date of Birth and SSN must be specified.'
WHEN Criteria4 THEN 'Id and Group Number must be specified.'
END
Run Code Online (Sandbox Code Playgroud)
至于语法中的错误,您有无关的BEGIN和END,我相信以下内容会起作用:
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 IF ( @DOB IS NULL AND @Id IS NULL )
BEGIN
INSERT INTO @ValidationError
(errormessage)
VALUES ( 'Date of Birth and Id must be specified.' )
END
ELSE IF ( @DOB IS NULL AND @SSN IS NULL )
BEGIN
INSERT INTO @ValidationError
(errormessage)
VALUES ( 'Date of Birth and SSN must be specified.' )
END
ELSE IF ( @Id IS NULL AND @GroupNumber IS NULL )
BEGIN
INSERT INTO @ValidationError
(errormessage)
VALUES ( 'Id and Group Number must be specified.' )
END
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
86628 次 |
| 最近记录: |