IF...ELSE (Transact-SQL)
適用於:SQL Server Azure SQL 資料庫 Azure SQL 受控執行個體 Azure Synapse Analytics Analytics Platform System (PDW) SQL 分析端點在 Microsoft Fabric SQL 資料庫中的 Microsoft 網狀架構倉儲Microsoft網狀架構
在 Transact-SQL 陳述式的執行上強制加上條件。 如果符合條件,則會執行後面 IF
關鍵詞及其條件的 Transact-SQL 語句:布爾運算式會傳 TRUE
回 。 選擇性 ELSE
關鍵字引進了另一個在不符合條件時 IF
執行的 Transact-SQL 語句:布爾運算式會傳 FALSE
回 。
語法
IF boolean_expression
{ sql_statement | statement_block }
[ ELSE
{ sql_statement | statement_block } ]
引數
boolean_expression
傳回 或FALSE
的TRUE
表達式。 如果布爾表達式包含 SELECT
語句, SELECT
語句必須以括弧括住。
{ sql_statement | statement_block }
使用語句區塊所定義的任何 Transact-SQL 語句或語句群組。 除非使用語句區塊, IF
否則 或 ELSE
條件只會影響一個 Transact-SQL 語句的效能。
若要定義語句區塊,請使用流程控制關鍵字 BEGIN
和 END
。
備註
IF...ELSE
建構可以用於批次、預存程式和臨機操作查詢中。 當這個建構用於預存程式中時,通常會測試某些參數是否存在。
IF
測試可以巢狀於另一個 IF
或之後 ELSE
。 巢狀層級數目的限制,會隨著可用的記憶體而不同。
範例
IF DATENAME(weekday, GETDATE()) IN (N'Saturday', N'Sunday')
SELECT 'Weekend';
ELSE
SELECT 'Weekday';
如需更多範例,請參閱 ELSE (IF...ELSE)。
範例:Azure Synapse Analytics 和 Analytics Platform System (PDW)
下列範例使用 IF...ELSE
,以根據 DimProduct
資料表中項目的權數,來判斷要向使用者顯示兩個回應中的哪一個。
-- Uses AdventureWorksDW
DECLARE @maxWeight FLOAT, @productKey INT;
SET @maxWeight = 100.00;
SET @productKey = 424;
IF @maxWeight <= (
SELECT Weight
FROM DimProduct
WHERE ProductKey = @productKey
)
SELECT @productKey AS ProductKey,
EnglishDescription,
Weight,
'This product is too heavy to ship and is only available for pickup.' AS ShippingStatus
FROM DimProduct
WHERE ProductKey = @productKey;
ELSE
SELECT @productKey AS ProductKey,
EnglishDescription,
Weight,
'This product is available for shipping or pickup.' AS ShippingStatus
FROM DimProduct
WHERE ProductKey = @productKey;