添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
SQL server 的if ..elif 用法(IF...ELSE IF 语句)

SQL server 的if ..elif 用法(IF...ELSE IF 语句)

在 SQL Server 中,可以使用 IF...ELSE IF 语句来根据条件执行不同的操作。IF...ELSE IF 语句的语法如下:

IF condition
   statement(s)
ELSE IF condition
   statement(s)
ELSE IF condition
   statement(s)
   statement(s)
END IF;

其中,condition 是一个逻辑表达式,用于判断条件是否为真。如果 condition 为真,则执行相应的 statement(s)。如果 condition 为假,则跳过该条件并检查下一个 ELSE IF 条件,如果没有 ELSE IF 条件,则执行 ELSE 块中的语句。

例如,以下是一个使用 IF...ELSE IF 语句的示例,该示例根据产品价格显示不同的信息:

DECLARE @Price DECIMAL(10, 2) = 50.00;
IF @Price < 25.00
    PRINT 'This is a low-priced product.';
ELSE IF @Price >= 25.00 AND @Price < 50.00
    PRINT 'This is a moderately-priced product.';
ELSE IF @Price >= 50.00 AND @Price < 75.00
    PRINT 'This is a high-priced product.';
    PRINT 'This is a premium-priced product.';

在这个示例中,我们首先声明一个变量 @Price,并将其赋值为 50.00。然后,我们使用 IF...ELSE IF 语句根据价格范围显示不同的信息。

请注意,条件是按顺序检查的,因此第一个条件是 @Price < 25.00。如果该条件为真,则执行相应的语句并跳过其他条件。否则,检查下一个 ELSE IF 条件,以此类推,直到找到一个条件为真为止。如果没有条件为真,则执行 ELSE 块中的语句。

在实际环境中应用:

1、 @HYKH 长度为0, @ORDER_NO 长度为0或不为0 并且 @HXDATE 长度为0 时,用于操作员查询用;

2、 @HYKH 长度为0, @ORDER_NO 长度为0或不为0 并且 @HXDATE 长度大于0 时,用于财务查询是否有核销记录用;

3、 当操作员输入的 会员卡号 @HYKH 在会员管理表VBU1 中存在时 即 @HYKH = @VCB04 时,更新表中字段

核销状态='已核销',核销人= @CZR_NO , 核销时间= GETDATE() , 会员卡号= @VCB04

DECLARE @ORDER_NO  VARCHAR(255)    ,
@CZR_ID VARCHAR(20)  ,
@HYKH VARCHAR(50)  ,
@CZR_NO VARCHAR(50)  ,
@VCB04 VARCHAR(50)  , --会员卡号
@HXDATE VARCHAR(50)
SET @HXDATE='2023-03-20'  --核销时间
SET @ORDER_NO =  '' --订单号
SET @CZR_ID = '569' --工号
SET @HYKH= ''--会员卡号
SELECT @CZR_NO=BCE02 FROM BCE1 WHERE BCE01=@CZR_ID
SELECT @VCB04=VAA02 FROM VAA1 WHERE VAA01= @HYKH
IF LEN(@HYKH)=0 AND LEN(@ORDER_NO)>=0  AND LEN(@HXDATE)=0  --AND LEN(@VCB04)=0
BEGIN 
	SELECT 
		核销状态  AS 核销状态,	
		订单编号,	粉丝昵称,	会员姓名,	收货姓名或自提人,	联系电话,	商品名称,	
                商品数量,	[商品单价(折扣前)],	[商品单价(折扣后)],	[商品价格(折扣前)],	
                [商品价格(折扣后)],	商品小计,	应收款,	下单时间,	付款时间,	OPENID	,核销人,	
                核销时间,会员卡号
	FROM 老商城待核验订单导出 
    WHERE 1=1 AND 订单编号 LIKE  '%'+@ORDER_NO+'%'    --AND CONVERT(VARCHAR(10),核销时间,120) LIKE  '%'+@HXDATE+'%'
ELSE IF LEN(@HYKH)=0 AND LEN(@ORDER_NO)>=0  AND LEN(@HXDATE)>0  
BEGIN
	SELECT 
		核销状态  AS 核销状态,	
		订单编号,	粉丝昵称,	会员姓名,	收货姓名或自提人,	联系电话,	商品名称,
         	商品数量,		[商品单价(折扣前)],	[商品单价(折扣后)],	[商品价格(折扣前)],	
                [商品价格(折扣后)],	商品小计,	应收款,	下单时间,	付款时间,	OPENID	,核销人,	
                核销时间,会员卡号
	FROM 老商城待核验订单导出 
    WHERE 1=1 AND 订单编号 LIKE  '%'+@ORDER_NO+'%'    AND CONVERT(VARCHAR(10),核销时间,120) LIKE  '%'+@HXDATE+'%'
BEGIN
	IF EXISTS (SELECT VCB04 FROM VBU1 WHERE VCB04=@VCB04)  
		 BEGIN 
			IF  EXISTS (SELECT 订单编号 FROM 老商城待核验订单导出 WHERE 订单编号=@ORDER_NO AND 核销人 IS NULL   AND	核销时间 IS NULL    AND	会员卡号 IS NULL AND 核销状态 ='未核销')  
				BEGIN
					UPDATE 老商城待核验订单导出  SET 核销状态='已核销',核销人= @CZR_NO  ,     核销时间= GETDATE() ,	会员卡号= @VCB04
                                        WHERE 订单编号=@ORDER_NO AND 核销人 IS NULL   AND	核销时间 IS NULL    AND	会员卡号 IS NULL AND 核销状态 ='未核销';
					SELECT 
						核销状态  AS 核销状态,	
						订单编号,	粉丝昵称,	会员姓名,	收货姓名或自提人,	联系电话,	商品名称,	商品数量,
						[商品单价(折扣前)],	[商品单价(折扣后)],	[商品价格(折扣前)],	[商品价格(折扣后)],	商品小计,	应收款,	下单时间,	付款时间,	OPENID	,核销人,	核销时间,会员卡号
					FROM 老商城待核验订单导出 
					WHERE 1=1 AND 订单编号 =@ORDER_NO;
				BEGIN
				 RAISERROR('订单编号有误或已核销,请检查后再提交!', 16, 1) WITH NOWAIT