如果sql中没有begin和end语句,那么下一个语句是唯一一个如果if条件为true则执行的语句...在下面的例子中,无论如何,如果是,那么insert语句也将被执行如果条件是真的?
IF (a > 1)
SET @b = 1 + 2
INSERT INTO #F (a, b, c) VALUES (1, 2, 3)
答案 0 :(得分:8)
IF (a > 1)
BEGIN
SET @b = 1 + 2
INSERT INTO #F (a, b, c) VALUES (1, 2, 3)
END
答案 1 :(得分:8)
在所有情况下都会调用insert语句,与if子句无关,因为if子句只是一行
如果您不确定添加开头和结尾(实际上我总是添加开头和结尾,即使它是一行开始,您永远不知道您或其他人何时需要添加另一行)
答案 2 :(得分:1)
TSQL中有Begin / End子句。
IF (a > 1)
BEGIN
SET @b = 1 + 2
INSERT INTO #F (a, b, c) VALUES (1, 2, 3)
END
答案 3 :(得分:1)
“如果sql中没有开始和结束语句,则if条件为真时,下一个语句是唯一执行的语句”
我不确定这是否属实,但为什么不把它包装在开头/结尾而不用担心呢?
答案 4 :(得分:0)
试试这个:
IF (A > 1)
BEGIN
SET @B = 1 + 2
INSERT INTO #F(a, b, c) VALUES (1, 2, 3)
END
答案 5 :(得分:0)
在您的示例中,将始终执行insert语句,因为它不作为IF语句的一部分进行求值。
MS SQL Server的示例代码:
Declare @a as int
Declare @b as int
Set @a = 2
If (@a > 1) Set @b = 1 + 2 Select 'Select Reached'
这相当于写作:
Declare @a as int
Declare @b as int
Set @a = 2
If (@a > 1)
BEGIN
Set @b = 1 + 2
END
Select 'Select Reached'