Mat*_*ias 28 sql t-sql sql-server
我正在尝试在下面的if else语句中设置多个值,如果我设置了一个值,它可以工作,但是如果我设置了两个值,它就不起作用:
DECLARE @test1 varchar(60);
DECLARE @test2 varchar(60);
IF ((SELECT COUNT(*) FROM table WHERE table.Date > '2016-03-20') > 10)
SET @test1 = 'test1'
SET @test2 = 'test2'
ELSE
SET @test1 = 'testelse'
SET @test2 = 'testelse'
Run Code Online (Sandbox Code Playgroud)
错误消息:"消息156,级别15,状态1,行9
关键字'ELSE'附近的语法不正确."
但是,似乎可以在else之后有多个SET变量; 这段代码有效:
IF ((SELECT COUNT(*) FROM table WHERE table.Date > '2016-03-20') > 10)
SET @test1 = 'test1'
ELSE
SET @test1 = 'testelse'
SET @test2 = 'testelse'
Run Code Online (Sandbox Code Playgroud)
我该怎么做才能正确?
Abd*_*eed 48
如果在if条件中有多个语句,则必须使用该BEGIN ... END
块来封装它们.
IF ((SELECT COUNT(*) FROM table WHERE table.Date > '2016-03-20') > 10)
BEGIN
SET @test1 = 'test1'
SET @test2 = 'test2'
END
ELSE
BEGIN
SET @test1 = 'testelse'
SET @test2 = 'testelse'
END
Run Code Online (Sandbox Code Playgroud)
使用BEGIN
和END
标记多语句代码块,就像使用{
和}
其他语言一样,您可以在其中放置多个SET
语句...
IF ((SELECT COUNT(*) FROM table WHERE table.Date > '2016-03-20') > 10)
BEGIN
SET @test1 = 'test1'
SET @test2 = 'test2'
END
ELSE
BEGIN
SET @test1 = 'testelse'
SET @test2 = 'testelse'
END
Run Code Online (Sandbox Code Playgroud)
或者,用于SELECT
为变量赋值,允许在单个语句中分配两者,因此避免使用BEGIN
和END
.
IF ((SELECT COUNT(*) FROM table WHERE table.Date > '2016-03-20') > 10)
SELECT
@test1 = 'test1',
@test2 = 'test2'
ELSE
SELECT
@test1 = 'testelse',
@test2 = 'testelse'
Run Code Online (Sandbox Code Playgroud)