Welcome 微信登录

首页 / 数据库 / MySQL / Oracle 存储过程 遍历查询记录

需要对Oracle查询结果进行不同记录间的 数据分析, 网上找了下, 找到一种类似编程语言的语法    DECLARE
        //声明变量
          
    BEGIN
         //具体操作
         if then
             //..
         end if;
        
         loop
             //..
         end Loop;
    END;具体为DECLARE
       TYPE c1 IS REF CURSOR;
       dateLast date ;
       dateNow date ;
       cBQHM t_rfid_passcar_i.Bqhm%TYPE;-- BQHM
       cLastBQHM t_rfid_passcar_i.Bqhm%TYPE;-- BQHM
      
       bHaveLast BOOLEAN := FALSE;
       temp_cursor c1;
       iContrast NUMBER(10) := 0;
       iIndex NUMBER(10) := 0;
      
BEGIN
     OPEN temp_cursor
          FOR
           SELECT BQHM, JRSJ FRom t_rfid_passcar_i where BQHM IN 
                  (select BQHM from t_rfid_passcar_i group by BQHM having count(*)>1)
                    order by "BQHM" ASC, "JRSJ" ASC;
     LOOP
         FETCH temp_cursor INTO cBQHM, dateNow;--获得当前记录的数据
         EXIT WHEN temp_cursor%NOTFOUND;
         IF bHaveLast THEN
            BEGIN
                 iContrast := ROUND(to_number(dateNow - dateLast) * 24 * 60 * 60) ;
                 IF cLastBQHM = cBQHM THEN
                   IF iContrast < (60 * 20) THEN
                      iIndex := iIndex + 1;
                      dbms_output.put_line(iIndex || "  " || cBQHM || "  " || iContrast || "  " || dateLast || "  "|| dateNow || "   " );
                   END IF;
                 END IF;
            END;
         END IF;   
         --dbms_output.put_line("-----------" || iIndex || cBQHM || "  " || iContrast || "  " || dateLast || "  "|| dateNow || "   " );
         dateLast := dateNow;
         cLastBQHM := cBQHM;
         bHaveLast := TRUE;
         --dbms_output.put_line(to_char(dateNow, "yyyy-mm-dd hh24:mi:ss"));
     END LOOP;
     CLOSE temp_cursor;
END;可以像c++等其他语言那样编程对记录集进行操作,  写了一下午,终于 实现了对结果集 不同记录的统计.  后来才发现这叫存储过程 哈哈, 原来sql也可以编程. Oracle备份--概念篇Oracle建表并加自增序列相关资讯      Oracle存储过程 
  • Oracle存储过程拼接in语句 & 自定  (今 09:21)
  • 【PL/SQL系列】Oracle存储过程使用  (04月23日)
  • Oracle存储过程及Java调用  (05/28/2015 20:29:33)
  • Java调用Oracle存储过程返回多条结  (04月29日)
  • Oracle中的存储过程简单应用  (04月10日)
  • 判断点是否落在面中的Oracle存储过  (05/09/2015 09:39:30)
本文评论 查看全部评论 (0)
表情: 姓名: 字数


评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或