SQL IF ELSE BEGIN END

时间:2009-09-28 20:04:11

标签: sql tsql if-statement

如果sql中没有begin和end语句,那么下一个语句是唯一一个如果if条件为true则执行的语句...在下面的例子中,无论如何,如果是,那么insert语句也将被执行如果条件是真的?

 IF (a > 1) 
     SET @b = 1 + 2
 INSERT INTO #F (a, b, c) VALUES (1, 2, 3)

6 个答案:

答案 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'