oracle 通过内部函数提高SQL效率.
SELECT H.EMPNO,E.ENAME,H.HIST_TYPE,T.TYPE_DESC,COUNT(*)
FROM HISTORY_TYPE T,EMP E,EMP_HISTORY H
WHERE H.EMPNO = E.EMPNO
AND H.HIST_TYPE = T.HIST_TYPE
GROUP BY H.EMPNO,E.ENAME,H.HIST_TYPE,T.TYPE_DESC;
通过调用下面的函数可以提高效率.
FUNCTION LOOKUP_HIST_TYPE(TYP IN NUMBER) RETURN VARCHAR2
AS
TDESC VARCHAR2(30);
CURSOR C1 IS
SELECT TYPE_DESC
FROM HISTORY_TYPE
WHERE HIST_TYPE = TYP;
BEGIN
OPEN C1;
FETCH C1 INTO TDESC;
CLOSE C1;
RETURN (NVL(TDESC,’?’));
END;
FUNCTION LOOKUP_EMP(EMP IN NUMBER) RETURN VARCHAR2
AS
ENAME VARCHAR2(30);
CURSOR C1 IS
SELECT ENAME
FROM EMP
WHERE EMPNO=EMP;
BEGIN
OPEN C1;
FETCH C1 INTO ENAME;
CLOSE C1;
RETURN (NVL(ENAME,’?’));
END;
SELECT H.EMPNO,LOOKUP_EMP(H.EMPNO),
H.HIST_TYPE,LOOKUP_HIST_TYPE(H.HIST_TYPE),COUNT(*)
FROM EMP_HISTORY H
GROUP BY H.EMPNO , H.HIST_TYPE;
( 经常在论坛中看到如 ’能不能用一个SQL写出….’ 的贴子, 殊不知复杂的SQL往往牺牲了执行效率. 能够掌握上面的运用函数解决问题的方法在实际工作中是非常有意义的)
最新文章
- Paypal支付小记
- c++11新的小猫腻
- 动态规划VS分治策略
- IDEA 中 显示 *.properties 为中文
- Python中的逗号有什么作用?
- http://blog.sina.com.cn/s/blog_5f103c9c0101atny.html
- 计算机网络及TCP/IP知识点(全面,慢慢看)
- [原创]EnterpriseDB测试key申请方法
- C++实现元组
- bzoj2257
- security Export/import
- 演示基于SDL2.0+FFmpeg的播放器
- C/C++中peek函数的原理及应用
- MySQL查询机制
- jquery 禁止回车事件响应
- Mike and strings CodeForces - 798B (又水又坑)
- Pandas基础知识(二)
- 开始记录 Windows Phone 生涯
- 【CV】CVPR2015_A Discriminative CNN Video Representation for Event Detection
- winform 使用线程