`
lsx125920
  • 浏览: 44301 次
  • 性别: Icon_minigender_1
  • 来自: 福建
社区版块
存档分类
最新评论

oracle 存储过程 含游标和循环

阅读更多
create or replace procedure getSystemNotice(pHumanID in INTEGER)

is

iCount INTEGER ;
fromTable sys_refcursor;
msgcur sys_refcursor;

var_MAXID INTEGER ;
var_EVENTSQL CLOB ;
var_EVENTID INTEGER ;
var_HASGREENCHANNEL INTEGER;
var_EXPOFLAG INTEGER;
var_CIVIFLAG INTEGER;
var_READFLAG INTEGER;
var_SQL varchar2(10000);

var_CONTENT VARCHAR2(500) ;
var_DISPLAYTYPE INTEGER ;
var_ISREAD INTEGER ;
Begin

    /*待办案卷*/
    Select count(*) into iCount from dlsys.tchumanfolderlist where TaskItemID=2 and humanID=pHumanID;

    If iCount>0 then

      /*获取开启待办案卷箱子的查询语句*/
      Select HUMANLISTSQL into var_EVENTSQL from dlsys.tchumanfolderlist where TaskItemID=2 and humanID=pHumanID;
      /*获取案卷eventID*/
      var_SQL := 'Select eventID from ('||var_EVENTSQL||')';
      open fromTable for var_SQL;
      loop
           fetch fromTable into var_EVENTID;
                 exit when fromTable%notfound; 
    
      if var_EVENTID is not null then         
      /*获取案卷相关信息*/
      Select eventDESC,HASGREENCHANNEL,EXPOFLAG,CIVIFLAG,READFLAG into
          var_CONTENT ,
          var_HASGREENCHANNEL,
          var_EXPOFLAG,
          var_CIVIFLAG,
          var_READFLAG
         from umdata.toEvent where eventID=var_EVENTID;
         
      /*根据案卷信息设定网站数据*/
      var_DISPLAYTYPE:=0;
      If var_HASGREENCHANNEL=1 then
       var_DISPLAYTYPE:=3;
      end if;
    
      if var_EXPOFLAG=1 then
       var_DISPLAYTYPE:=2;
      end if;
    
      if var_CIVIFLAG=1 then
       var_DISPLAYTYPE:=1;
      End if;
    
      If var_READFLAG=1 then
       var_ISREAD:=1;
      else
       var_ISREAD:=0;
      End if;
    
      /*判定是新增还是变更*/
      Select nvl(count(*),0) into iCount from umdata.tcinstantmsg where BIZID=var_EVENTID;
      If iCount=0 and var_READFLAG =0 then
        Select MAX(ID) into var_MAXID from umdata.tcinstantmsg;
        Insert into umdata.tcinstantmsg (ID,BIZID,SUBSYSTEMID,MSGTYPEID,MSGTYPENAME,MSGTITLE,CONTENT,HUMANID,DISPLAYTYPE,ISREAD)
        values (var_MAXID+1,var_EVENTID,10000,1101,'待办案卷','待办案卷 ',var_CONTENT,pHumanID,var_DISPLAYTYPE,var_ISREAD);

      else
        if iCount<>0 then
        Update umdata.tcinstantmsg set ISREAD=var_ISREAD where ISREAD<>var_ISREAD
               and HumanID=pHumanID
               and BIZID=var_eventID;
         end if;
      End if;
      commit;
      end if;
     End loop;
    End if;
    close fromTable;
  
    /*我的消息,每次刷新前先删除网站中我的消息信息*/
   Delete from umdata.tcinstantmsg where MSGTYPEID=1105 and HumanID=pHumanID;
   commit;
      /*获取我的消息相关信息*/
      Select MAX(ID) into var_MAXID from umdata.tcinstantmsg;
      open msgcur for
      Select MESSAGETEXT,receiveflag from dlmis.trlogmessage
      where receiveHumanID=pHumanID
           and (receiveflag<>1 or receiveflag is null )
           and (deleteflag<>1 or deleteflag is null) and sysdate-senddate<1 and sysdate-senddate>=0;
       
      loop          
          fetch msgcur into var_CONTENT ,var_READFLAG;
                 exit when msgcur%notfound; 
              /*插入我的消息*/
              Insert into umdata.tcinstantmsg (ID,SUBSYSTEMID,MSGTYPEID,MSGTYPENAME,MSGTITLE,CONTENT,HUMANID)
              values (var_MAXID+1,10000,1105,'我的消息','我的消息',var_CONTENT,pHumanID);
              commit;
    
      end loop;
      close msgcur;

Exception
    When others then
       Rollback;

End getSystemNotice;
/
分享到:
评论

相关推荐

    Oracle存储过程、游标、函数的详解

    通过以上对Oracle存储过程、游标和函数的详细介绍,我们可以看到这些特性为Oracle数据库提供了一种强大而灵活的方式来处理数据。掌握这些技术对于开发高效的应用程序至关重要。在未来的学习和实践中,我们应该不断...

    Oracle存储过程游标详解

    "Oracle存储过程游标详解" Oracle 存储过程游标是指在 Oracle 数据库中使用游标来实现对结果集的处理和操作。游标可以分为静态游标和REF游标两种类型。静态游标是指结果集已经确实(静态定义)的游标,可以进一步...

    Oracle存储过程实例使用显示游标

    在本例中,“Oracle存储过程实例使用显示游标”着重展示了如何在存储过程中调用函数,并通过游标来处理和更新数据。 首先,我们需要了解存储过程的基本结构。一个存储过程通常包含以下部分: 1. **声明部分**:在...

    oracle 的函数、存储过程、游标、简单实例

    本主题将深入探讨Oracle中的几个核心概念:函数、存储过程、游标以及简单的实例,这些都是数据库管理员和开发人员日常工作中不可或缺的部分。 首先,我们来了解**Oracle函数**。函数是预定义的代码块,接受零个或多...

    用callabledStatement调用oracle存储过程实用例子(IN OUT 传游标)

    本示例展示了如何使用 CallabledStatement 来调用 Oracle 存储过程,并实现 IN OUT 参数和游标类型参数的使用。这种方法可以提高应用程序的性能和安全性。同时,游标类型参数的使用可以实现数据的批量处理,提高应用...

    oracle存储过程、游标、函数

    **一、Oracle存储过程** 存储过程是预编译的SQL语句集合,它们被存储在数据库中并可以按需调用。存储过程有以下几个优点: 1. **性能提升**:由于存储过程在首次创建时就被编译,因此后续调用时执行速度快。 2. **...

    oracle 隐式游标,显示游标,游标循环

    游标循环是指通过循环结构(如`LOOP`、`WHILE`或`FOR`循环)来遍历游标中的每一行数据。这种方式特别适用于处理多行数据的情况。 ##### 1. 使用`LOOP`循环 ```sql DECLARE CURSOR c_employees IS SELECT * FROM ...

    sql server和oracle的存储过程、游标示例

    在数据库管理领域,SQL Server和Oracle都是广泛应用的关系型数据库管理系统,它们都支持存储过程和游标的使用,这两种特性极大地增强了数据库的功能性和效率。存储过程是预编译的SQL语句集合,而游标则用于逐行处理...

    Oracle教案 Oracle 存储过程 游标 SQL语句 PL/SQL

    PL/SQL 是 Oracle 专有的扩展 SQL 语言,结合了 SQL 的数据查询功能和过程编程语言的控制结构。它提供了变量、循环、条件判断、异常处理等功能,使得编写复杂的数据库应用程序变得可能。PL/SQL 代码块可以嵌入到 ...

    oracle存储过程、游标、函数、PL/SQL块

    包含oracle存储过程的增、删、查、改 %type、%rowtype的使用 自定义函数 PL/SQL块

    oracle数据库的游标

    但是,显式游标循环处理的代码更容易理解和维护。 使用游标时,还有一些注意事项。首先,游标打开之后,必须执行至少一次fetch操作,这样游标的属性才能生效。在while循环处理游标的过程中,应该将数据处理逻辑放在...

    job 存储过程 视图 游标结合实例

    在Oracle数据库系统中,"Job"、"存储过程"、"视图"和"游标"是四个核心的数据库管理工具,它们对于数据库的高效运行和数据管理至关重要。接下来,我们将详细探讨这些概念以及它们在实际应用中的结合实例。 1. Job...

    Oracle_的存储过程及游标

    通过理解并熟练运用Oracle的存储过程和游标,开发者可以构建高效、模块化的数据库应用,提高代码复用性和数据库性能。在实际开发中,应根据需求合理选择使用函数或存储过程,并灵活运用游标处理复杂查询和结果集。

    存储过程和游标详解

    ### 存储过程和游标详解 #### 一、存储过程概述 存储过程,作为数据库管理系统(DBMS)中的一种重要特性,尤其在Oracle等关系型数据库中被广泛应用。它允许开发者将一系列SQL语句和控制流语句组合在一起,封装为一个...

    oracle存储过程学习经典入门

    本文将从 Oracle 存储过程的基础知识开始,逐步深入到 Oracle 存储过程的高级应用,包括 Hibernate 调用 Oracle 存储过程和 Java 调用 Oracle 存储过程的方法。 Oracle 存储过程基础知识 Oracle 存储过程是 Oracle...

    Oracle存储过程返回游标实例详解

    Oracle存储过程返回游标是一种常见的数据处理方式,它允许开发者在存储过程中执行SQL查询并返回结果集,供调用者进一步处理。游标在数据库编程中扮演着重要角色,尤其在处理多行记录时,提供了灵活的数据遍历手段。...

    oracle 存储过程批量提交

    存储过程是由一系列SQL语句和过程化SQL语句(如循环、条件判断等)组成的单元,它们被编译并保存在数据库中。当存储过程被调用时,整个过程将作为一个整体被执行,这可以极大地提高执行效率,并简化应用程序的设计。...

    关于存储过程和游标的总结

    如果使用了游标,就要尽量避免在游标循环中再进行表连接的操作。 游标是一种强大的机制,可以帮助应用程序逐行处理结果集。但是,在使用游标时,需要注意避免性能问题,并且合理使用游标类型和状态。

    oracle函数触发器游标等几个小例子

    Oracle数据库是世界上最流行的数据库管理系统之一,它提供了丰富的功能来处理数据,包括函数、游标和触发器。在本文中,我们将深入探讨这些概念,并通过一些实际的例子来理解它们的用法。 1. **Oracle函数**:函数...

Global site tag (gtag.js) - Google Analytics