博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
oracle 通过内部函数提高SQL效率.
阅读量:5305 次
发布时间:2019-06-14

本文共 925 字,大约阅读时间需要 3 分钟。

 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往往牺牲了执行效率. 能够掌握上面的运用函数解决问题的方法在实际工作中是非常有意义的)

转载于:https://www.cnblogs.com/fanweisheng/p/11124374.html

你可能感兴趣的文章
select, iocp, epoll,kqueue及各种I/O复用机制
查看>>
翻译一段 小美文:1
查看>>
做.net的成为 微软mvp 是一个目标吧。
查看>>
导出excel
查看>>
苹果出包遇到的问题及解决
查看>>
新《消法》实施典型案例公布 西安一超市受惩处
查看>>
[20]iwl3945 no power management and solution of fan contorl
查看>>
关于 IdentityServer 部署到生产环境相关问题踩坑记录
查看>>
Asp.Net Mvc5 结合 SignalR2.0+ 实现消息交互简单例子
查看>>
梳理 Opengl ES 3.0 (二)剖析一个GLSL程序
查看>>
jQuery起点教程之使用选择器和事件
查看>>
初见 sublime text
查看>>
3.2.2 变量 时标符
查看>>
C语言运算符优先级
查看>>
Struts2标签库之iterator
查看>>
Linux 安装tomcat 及过程中遇到的问题
查看>>
解决接收不到组播包的问题
查看>>
[HDU 3336]Count the String[kmp][DP]
查看>>
xml--通过jdom解析及生产XML
查看>>
二叉树遍历
查看>>