【Oracle】IF EXISTS用法
在Oracle中没有SQL中的if exists(...)
的用法,所以可以用以下几种方法来替代
判断符合条件的个数是否为0
DECLARE cnt number;BEGINSELECT COUNT(*) INTO cnt FROM TEMP_ERROR_ITEM WHERE SER_PROVINCE_ID = '130201';IF cnt = 0 THENDBMS_OUTPUT.PUT_LINE('无记录');END IF;
END;
先定义一个变量,将所要查询的条件写成一个SELECT语句,将汇总结果付给该变量,通过该变量的值作为判断条件
这种方法会直接统计数据表中所有的满足条件的记录总数,对于一些数据量庞大的表,在性能上会有非常严重的问题
调用Oracle的EXISTS函数
DECLARE cnt number;BEGINSELECT COUNT(*) INTO cnt FROM DUALWHERE EXISTS (SELECT 1 FROM TEMP_ERROR_ITEM WHERE SER_PROVINCE_ID = '130201');IF cnt = 0 THENDBMS_OUTPUT.PUT_LINE('无记录');END IF;
END;
通过在语句的外面套上一层dual,来使用oracle原有的exists语法
虽然和第一种看起来类似,但分析执行计划可以知道,性能比以上两种都要好得多,与MSSQL的 if exists 最接近
将判断条件封装为一个函数
CREATE OR REPLACE FUNCTION EXISTS2 (IN_SQL IN VARCHAR2)RETURN NUMBER
ISV_SQL VARCHAR2(4000);V_CNT NUMBER(1);
BEGINV_SQL := 'SELECT COUNT(*) FROM DUAL WHERE EXISTS (' || IN_SQL || ')';EXECUTE IMMEDIATE V_SQL INTO V_CNT;RETURN(V_CNT);
END;
需要使用的时候直接调用EXISTS2函数即可,例如
BEGINIF EXISTS2 ('SELECT 1 FROM TEMP_ERROR_ITEM WHERE SER_PROVINCE_ID = ''130201''') = 1 THENDBMS_OUTPUT.PUT_LINE('存在记录');END IF;
END;
转载:https://www.cnblogs.com/neru/archive/2012/06/23/2559551.html
【Oracle】IF EXISTS用法相关推荐
- oracle的exists用法总结
exists含义 exists表示()内子查询语句返回结果不为空说明where条件成立就会执行主sql语句,如果为空就表示where条件不成立,sql语句就不会执行.not exists和exists ...
- java SQLexists用法,exists用法-EXISTS,用法
本教程分享:<exists用法>,exists用法:Exists:如果在 Dictionary 对象中指定的记录存在,返回 True,若不存在,返回 False.语法object.Exis ...
- oracle中的exists 和 not exists 用法详解
from:http://blog.sina.com.cn/s/blog_601d1ce30100cyrb.html oracle中的exists 和 not exists 用法详解 (2009-05- ...
- oracle中的exists 和not exists 用法详解
有两个简单例子,以说明 "exists"和"in"的效率问题 1) select * from T1 where exists(select 1 from T2 ...
- oracle中exists和not exists用法(包含经典例题:查看学了所有课程的同学的信息的通俗易懂解释)
1.基本概念: select * from A where not exists(select * from B where A.id = B.id); select * from A where e ...
- 1.oracle中的exists 和not exists 用法:
1.oracle中的exists 和not exists 用法: exists (sql 返回结果集为真) not exists (sql 不返回结果集为真) 如下: 表A ID NAME 1 A1 ...
- MyBatis中exists用法
MyBatis框架中的exists用法 exists用法 使用示例 总结 exists用法 exists: 如果括号内子查询语句返回结果不为空,说明where条件成立,就会执行主SQL语句 如果括号内 ...
- ORACLE NOT EXISTS不等值 改写成hive
ORACLE NOT EXISTS不等值 改写成hive SELECT A.A1, A.A2,A.A3,A.A4FROM ALEFT JOIN C ON A.A6= C.C6WHERE NOT EXI ...
- ORACLE的基础用法
ORACLE的基础用法 转 自:http://blog.163.com/kelly_19831017/blog/static/6196787020083133348873/ sqlplus sys/o ...
- 常见Oracle HINT的用法
1. /*+ALL_ROWS*/ 表明对语句块选择基于开销的优化方法,并获得最佳吞吐量,使资源消耗最小化. 例如: SELECT /*+ALL+_ROWS*/ EMP_NO,EMP_NAM,DAT_I ...
最新文章
- 【Jekyll搭建GITHUB个人博客】安装Ruby 环境、包管理器 RubyGems、Jekyll与错误解决...
- Struts2 @ResultPath注释示例
- 关于S/4HANA里Sales Office 和Sales Organization那些事儿
- 目标检测中召回率(Recall),精确率(Precision),平均正确率(Average_precision(AP) ),交除并(Intersection-over-Union(IoU))
- 关于JAVA并发编程你需要知道的——硬件篇
- 具有Spring Boot和Java配置的Spring Batch教程
- 一个备份sql server文件.bak还原成两个数据库
- 移动云亮相 2021 IDC 年度盛典 共话变革与赋能
- 定义“移动互联网”的三篇文章
- 新浪微博 android2.3,BlackLight新浪微博客户端
- html设置回到顶部按钮,给网站添加回到顶部按钮
- 凭什么?80后合伙人“叫板Excel”
- kali安装火狐浏览器
- 微信怎么收银行卡的消息服务器,微信零钱提现,这样操作,可以免去手续费
- 类文件解析004-解析常量池元素
- vim 去掉黄色阴影
- electron (二) 暗黑模式
- 雷军带出来的软件,阿里奖励20万,全靠友商衬托,和wps同步普及
- 若依专题 线程池配置
- 为iPhone日历添加天气和农历
热门文章
- 18年6月英语六级第二套听力单词
- 人工智能语料库技术是什么?来看科普!
- 用git和github来拉近和大牛的距离-郭永峰-专题视频课程
- MATLAB高斯高通滤波图像
- Java集合类源码分析汇总
- python微信商城_python微信商城_GitHub - pythonsir/nideshop: NideShop 开源微信小程序商城服务端(Node.js + ThinkJS)......
- android搜狗离线安装包,搜狗翻译离线版下载
- 十六种CAD.CAE.CAM软件介绍
- RedHat7 安装 MySQL 5.7
- 抖音:时间熔炉的诞生