Oracle WHERE判断语句后跟括号 or

参考了下以下的网址:

关于Oracle WHERE后面跟判断语句问题 - 开发者知识库q

工作遇到一个问题:如果传入的分区变量 P_REPORT_TYPE 是’ALL‘时,那么就要将所有的公司编码 COMPANY_CODE 输出,但如果不是'ALL',那么就需要根据传入的另一个变量 P_COMPANY_CODE 来只输出这个公司编码(COMPANY_CODE = P_COMPANY_CODE )

找了半天发现,有个where ( or )这个方法,根据上面的参考总结了下:

where 条件1 
    AND ( 条件2 or (条件3))
-- 如果条件2 为真则执行条件2 否则执行条件3

测试:

DECLARE
CC VARCHAR2(50) := 'ALL';

BEGIN
  SELECT DISTINCT SALES_CATEGORY_NAME FROM DM_CST_ALLOCATION_COMMON_REPORT_LZJ 
  WHERE BRAND_NAME ='添宁'  AND ('ALL' = 'ALL' OR (SALES_CATEGORY_NAME = '护理垫'));
END;

-- 此时会输出所有的添宁品牌的产品分类
DECLARE
CC VARCHAR2(50) := '';

BEGIN
  SELECT DISTINCT SALES_CATEGORY_NAME FROM DM_CST_ALLOCATION_COMMON_REPORT_LZJ 
  WHERE BRAND_NAME ='添宁'  AND ('ALL' = 'ALL' OR (SALES_CATEGORY_NAME = '护理垫'));
END;

-- 此时只会输出添宁品牌的‘护理垫’的产品分类

实际作业中也可以解决:

 AND (P_REPORT_TYPE = 'ALL' OR (CA.COMPANY_CODE = V_COMPANY_CODE))
 --AND CA.COMPANY_CODE = V_COMPANY_CODE --曾经代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值