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

  • 相关阅读:
    编写ocx出现未能注册输出。请确保您有修改注册表的相应权
    电子商务网站交互设计
    浅析Spring AOP
    ubuntu aptget
    URL对SEO的影响
    向各大搜索引擎提交你的网站
    站长SEO常用查询工具
    ubuntu关机重启命令
    vi中:x和:wq的区别
    RPM/AlienHowto
  • 原文地址:https://www.cnblogs.com/benio/p/2156549.html
Copyright © 2011-2022 走看看