• 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

  • 相关阅读:
    [转]UTF-8网页中的头部部分多出一行空白
    php json josn_decode()返回的是对像,如何把对像转成数组
    php file_get_contents计时读取一个文件/页面 防止读取不到内容
    java基础知识 构造方法
    Java基础知识Set、List、Map的区别
    Java基础知识 Set
    java基础语法 List
    java基础语法 数组
    java基础语法this关键字
    http webservice socket的区别
  • 原文地址:https://www.cnblogs.com/benio/p/2156549.html
Copyright © 2020-2023  润新知