在本教學中,將學習SQL Server IF...ELSE
語句來控制程式的流程。
IF...ELSE
語句是一個控制流語句,用於根據指定的條件執行或跳過語句塊。
IF語句
以下是IF
語句的語法:
IF boolean_expression
BEGIN
{ statement_block }
END
在此語法中,如果Boolean_expression
的計算結果為TRUE
,則執行BEGIN...END
塊中的statement_block
。 否則,將跳過statement_block
,並將程式的控制權傳遞給END
關鍵字之後的語句。
請注意,如果布爾運算式包含SELECT
語句,則必須將SELECT
語句括在括弧中。
以下示例首先從示例資料庫中的sales.order_items
表中獲取銷售額。 然後,如果銷售額大於100
萬,它將列印出一條消息。
BEGIN
DECLARE @sales INT;
SELECT
@sales = SUM(list_price * quantity)
FROM
sales.order_items i
INNER JOIN sales.orders o ON o.order_id = i.order_id
WHERE
YEAR(order_date) = 2018;
SELECT @sales;
IF @sales > 1000000
BEGIN
PRINT 'Great! The sales amount in 2018 is greater than 1,000,000';
END
END
執行上面代碼塊,得到以下輸出結果:
Great! The sales amount in 2018 is greater than 1,000,000
IF ELSE聲明
當IF
子句中的條件求值為FALSE
時,並且想要執行另一個語句塊時,可以使用ELSE
子句。
以下說明IF ELSE語句:
IF Boolean_expression
BEGIN
-- 當布爾運算式為TRUE時,將執行此語句塊
END
ELSE
BEGIN
-- 當布爾運算式為FALSE時,將執行此語句塊
END
每個IF
語句都有一個條件。 如果條件的計算結果為TRUE
,則執行IF
子句中的語句塊。 如果條件為FALSE
,則執行ELSE
子句中的代碼塊。
請參閱以下示例:
BEGIN
DECLARE @sales INT;
SELECT
@sales = SUM(list_price * quantity)
FROM
sales.order_items i
INNER JOIN sales.orders o ON o.order_id = i.order_id
WHERE
YEAR(order_date) = 2017;
SELECT @sales;
IF @sales > 10000000
BEGIN
PRINT 'Great! The sales amount in 2018 is greater than 10,000,000';
END
ELSE
BEGIN
PRINT 'Sales amount in 2017 did not reach 10,000,000';
END
END
在此示例中,獲取2017
年的銷售額。在IF
子句中檢查銷售額是否大於1000
萬。 由於銷售額小於該值,因此ELSE
子句中的語句塊將執行。
以下顯示輸出:
Sales amount did not reach 10,000,000
嵌套IF…ELSE語句
可以在一個IF...ELSE
語句中嵌套另一個IF...ELSE
語句。 請參閱以下示例:
BEGIN
DECLARE @x INT = 10,
@y INT = 20;
IF (@x > 0)
BEGIN
IF (@x < @y)
PRINT 'x > 0 and x < y';
ELSE
PRINT 'x > 0 and x >= y';
END
END
不將IF
語句嵌套在另一個IF
語句中是一個好習慣,因為它會使代碼難以閱讀並且難以維護。
在本教學中,學習了如何使用SQL Server IF...ELSE
語句來控制代碼執行流程。
上一篇:
SQL Server存儲過程
下一篇:
SQL Server用戶定義函數