zoukankan      html  css  js  c++  java
  • PLSQL笔记 存在性检查

    典型的例子:

    查看是否存在一条记录满足<特定条件> 。存在则<做一些处理>。

    例如:检查是否有员工上个月聘用的。

     差劲的SQL:


    select count(*)

      
    from emp

    where hiredate > trunc(sysdate,'MM');

    这是一个差劲的SQL,因为我们并不需要员工数量。通过对结果集的所有记录计数,从而验证至少有一行是满足条件的,这样并不高效。


     PL/SQL的方案,可以用显式游标和%FOUND属性来执行单个的读取。

    CREATE OR REPLACE FUNCTION IS_EMP_THERE RETURN VARCHAR2 IS
        
    CURSOR C IS
            
    SELECT 1
              
    FROM emp
             
    WHERE hiredate > TRUNC(SYSDATE, 'MM');
        r 
    NUMBER;
        v 
    VARCHAR2(3);
    BEGIN
        
    OPEN C;
        
    FETCH c
            
    INTO r;
        
    IF c%FOUND THEN
            v :
    = 'YES';
        
    ELSE
            v :
    = 'NO';
        
    END IF;
        
    CLOSE c;
        
    RETURN v;
    END;

     虽然读取单个记录确实比读取结果集的所有记录高效,但这个方法是PLSQL的方法,当有适合的SQL方法可以使用时,尽量使用SQL,因为SQL会比PLSQL高效得多。


    SQL解决方法:

    SELECT COUNT(1)
      
    FROM dual
     
    WHERE EXISTS (SELECT NULL
              
    FROM emp
             
    WHERE hiredate > TRUNC(SYSDATE, 'MM'));

     结果:如果存在返回1,不存在返回0,所以根本不需要使用PLSQL。

             

                成长

           /      |     \

        学习   总结   分享

    QQ交流群:122230156

  • 相关阅读:
    第八节 JS运动基础
    第七节 DOM操作应用-高级
    第六节 DOM操作应用
    第五讲 DOM基础
    第二节 数学基础与语言学基础
    第一节 自然语言处理概论
    第0节 课程简述
    第四节 定时器
    基本概念
    常用命令
  • 原文地址:https://www.cnblogs.com/benio/p/2156549.html
Copyright © 2011-2022 走看看