Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL Server中的开始…结束块_Sql Server_Tsql_Case_Iif - Fatal编程技术网

Sql server SQL Server中的开始…结束块

Sql server SQL Server中的开始…结束块,sql-server,tsql,case,iif,Sql Server,Tsql,Case,Iif,在BEGIN…END块下是否定义了对T-SQL语句进行分组的规则 因为当我在CASE语句或IIF语句中尝试BEGIN…END块时,它失败了 我需要BEGIN…END块,因为我想在案例结果下执行多个操作 SELECT CASE @ChargePaid WHEN 1 THEN BEGIN SELECT 'Paid' END WHEN 0 THEN BEGIN SELE

BEGIN…END
块下是否定义了对T-SQL语句进行分组的规则

因为当我在
CASE
语句或
IIF
语句中尝试
BEGIN…END
块时,它失败了

我需要
BEGIN…END
块,因为我想在
案例
结果下执行多个操作

SELECT 
CASE @ChargePaid
WHEN 1 THEN 
            BEGIN 
             SELECT 'Paid'
            END
WHEN 0 THEN 
            BEGIN 
             SELECT 'Not Paid'
            END
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条件。 如果为false,我希望避免进一步处理代码优化,并将费用缺失信息存储到@msg variable\table。

分隔程序语句

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

块接受表达式

计算条件列表并返回多个可能的结果表达式之一

因此,您正试图在圆孔中安装方形销钉。

分隔程序语句

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

块接受表达式

计算条件列表并返回多个可能的结果表达式之一


因此,您正在尝试在圆孔中安装方形销钉。

是的,有规则,不,您不能这样做。解释真正的潜在需求,而不是您提出的解决方案,然后我们可以提出替代方案。c、 f.-例如,为什么不
选择CASE@ChargePaid当1时,然后选择“Paid”,当0时选择“Paid”,然后选择“not Paid”结束
?Aditya,您实际上想实现什么。Select case和IIF不适用于程序代码。它们仅用于评估。也许你想做点别的事?“你能不能把你要解决的问题放在这里,我们可以帮助你找到正确的方法呢?”MartinSmith,这只是一个伪代码。基本上,它是基于付费条件,我将验证其他数量的东西,并将结果存储到变量中,以在应用程序屏幕上显示result=msg。在这段代码中,我正在使用CTE,所以需要在它之后立即编写SELECT。。。这就是为什么在这种情况下需要开始…结束块。我希望你能理解?嗨,阿迪蒂亚,我看到你想在更新的问题中优化代码等。最好先让某些东西工作起来,然后再进行优化。也许你可以得到一个工作版本,然后问一些关于优化的具体问题。您的伪代码现在与原始问题大不相同,仍然难以理解。顺便说一句,TSQL中的“IF”语句是过程性的,而IIF不是过程性的,所以也许您可以使用IF语句来控制执行。@cameront,无论如何,使用变量解决了我的问题。非常感谢您的快速帮助:)是的,有规则,不,您不能这样做。解释真正的潜在需求,而不是您提出的解决方案,然后我们可以提出替代方案。c、 f.-例如,为什么不
选择CASE@ChargePaid当1时,然后选择“Paid”,当0时选择“Paid”,然后选择“not Paid”结束
?Aditya,您实际上想实现什么。Select case和IIF不适用于程序代码。它们仅用于评估。也许你想做点别的事?“你能不能把你要解决的问题放在这里,我们可以帮助你找到正确的方法呢?”MartinSmith,这只是一个伪代码。基本上,它是基于付费条件,我将验证其他数量的东西,并将结果存储到变量中,以在应用程序屏幕上显示result=msg。在这段代码中,我正在使用CTE,所以需要在它之后立即编写SELECT。。。这就是为什么在这种情况下需要开始…结束块。我希望你能理解?嗨,阿迪蒂亚,我看到你想在更新的问题中优化代码等。最好先让某些东西工作起来,然后再进行优化。也许你可以得到一个工作版本,然后问一些关于优化的具体问题。您的伪代码现在与原始问题大不相同,仍然难以理解。顺便说一句,TSQL中的“IF”语句是过程性的,而IIF不是过程性的,所以也许您可以使用IF语句来控制执行。@cameront,无论如何,使用变量解决了我的问题。非常感谢您的快速帮助:)请参阅相关编辑。你能帮忙吗?+1请参见相关编辑。你能帮忙吗?+1.
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.