SQL Server中的BEGIN ... END块

时间:2016-03-25 09:49:11

标签: sql-server tsql case iif

是否有定义的规则用于在BEGIN...END块下对T-SQL语句进行分组?

因为当我在BEGIN...END语句OR CASE语句中尝试IIF块时,它会失败。

我需要BEGIN...END阻止,因为我想在CASE结果下执行多项操作。

SELECT 
CASE @ChargePaid
WHEN 1 THEN 
            BEGIN 
             SELECT 'Paid'
            END
WHEN 0 THEN 
            BEGIN 
             SELECT 'Not Paid'
            END
END

OR

SELECT IIF( @ChargePaid > 0, BEGIN SELECT 'Paid' END , BEGIN SELECT 'Not Paid' END )

修改

IF @cond = 'First'
WITH CTE AS (
             SELECT 'A missing' Result
             UNION 
             SELECT 'B missing' Result
             UNION 
             SELECT 'C missing' Result
)
SET @msg = SELECT Result from CTE 

IF @cond = 'Second'
WITH CTE AS (
              SELECT 'A missing' Result
              UNION 
              SELECT 'B missing' Result
              UNION 
              SELECT 'C missing' Result
)
SET @msg = SELECT Result from CTE 

IF @ChargePaid = 0
...
Some code goes here to generate the message.
Then I store the actual message into @msg variable.
...

In the end I store the @msg values (I trim the @msg if it requires) to the table. 

我想要的是:

我想验证@ChargePaid条件。 如果它是假的,我想避免进一步处理以优化代码和将缺少的信息存储到@msg variable \ table。

1 个答案:

答案 0 :(得分:6)

BEGIN / END分隔程序语句

  

包含一系列Transact-SQL语句,以便可以执行一组Transact-SQL语句。

CASE阻止接受表达式

  

评估条件列表并返回多个可能的结果表达式之一。

所以你试图将一个方形钉固定在圆孔中。