`
monlyu
  • 浏览: 52941 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

存储过程和游标一起使用的例子

 
阅读更多
create or replace procedure findmiss(issue in varchar2) IS
Cursor cursor is select aac001 from ac01_zhr;
aac001 varchar(10);
salary number(10,2);
months number(10,2);
tmp ic13_zhr.aic231%type;
begin 
    DBMS_OUTPUT.put_line('金额为正数为<欠拨>,为负数则为<多拨>');
    for aac001 in cursor LOOP
        begin
           select count(*) into months from ic10_zhr where aac001 = aac001.aac001;
           if aac001.aac001 = '2910850218' then
              DBMS_OUTPUT.put_line('');
           end if;
           if months >0 then     
              salary := 0;
              select (((SUBSTR(issue,1,4)- 2008)*12) + (SUBSTR(issue,5,2))) into months from dual;
              salary := salary + (months * 450);
              select (SUBSTR(issue,5,2) * 50 ) into months from dual;
              salary := salary + months;
              select y.aic231 into tmp from ic13_zhr y where y.aac001 = aac001.aac001 and y.aic230='09043';
              if tmp <='200801' then
                 tmp := '200801';
              end if;
              if tmp <=issue then
                 select (((SUBSTR(issue,1,4)- SUBSTR(tmp,1,4))*12) + (SUBSTR('200904',5,2)-SUBSTR(tmp,5,2)+1)) into months from dual;
                  salary := salary + months * 50;
              end if;
              select y.aic231 into tmp from ic13_zhr y where y.aac001 = aac001.aac001 and y.aic230='09048';
              if tmp <='200801' then
                 tmp := '200801';
              end if;
              if tmp <=issue then
                 select (((SUBSTR(issue,1,4)- SUBSTR(tmp,1,4))*12) + (SUBSTR('200904',5,2)-SUBSTR(tmp,5,2)+1)) into months from dual;
                  salary := salary + months * 50;
              end if;
                select abs(y.aic121) into months from ic10_zhr y where y.aac001=aac001.aac001;
                salary := salary - months;
                select nvl(sum(aic142),0) into months  from ic15_zhr_zhc where aac001 = aac001.aac001;
                if salary != months then
                   salary := salary - months;
                   DBMS_OUTPUT.put_line('编号>'|| aac001.aac001 || ' 相差>' || salary);
                end if;
           end if;
        end;
    end LOOP;
    commit;
end findmiss;
/

分享到:
评论
1 楼 TTLtry 2009-12-05  
  自己平时很少用到,不过感觉如果要做一个很有效率的系统的话,数据库的考虑很有必要。。。

相关推荐

    SQL SERVER中的存储过程和游标的使用大综合

    在"存储过程和游标创建使用大综合"的压缩包文件中,你可以找到更多关于这两个主题的实际例子和练习,帮助你深入理解和掌握SQL Server中存储过程和游标的使用方法。不断学习和实践这些知识,将有助于提升你在数据库...

    自己做的存储过程含游标例子

    自己做的存储过程含游标例子,对于初学存储过程和游标的人有帮助

    MS SQL Server2005存储过程、游标、游标嵌套综合例子

    通常,这样的示例会展示如何在存储过程中声明和使用游标,以及如何通过游标来迭代处理数据,以实现复杂的逻辑,比如批量更新或数据验证。 通过学习和理解这个示例,开发者可以更好地掌握SQL Server 2005中的存储...

    mysql游标存储过程例子

    根据提供的文件信息,本文将详细解释一个MySQL存储过程的例子,其中包含了游标的使用。这个存储过程主要用于处理一批数据,涉及到日期范围内的数据处理、异常处理等。下面将逐一解析存储过程中涉及的重要知识点。 #...

    oracle存储过程使用游标对多表操作例子

    标题:“oracle存储过程使用游标对多表操作例子”直接指出了文章的主题是关于在Oracle环境下,如何利用存储过程和游标实现跨多个表的数据处理。描述部分重复了标题内容,强调了示例性质,表明文章将通过具体实例来...

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

    Oracle 存储过程调用 CallabledStatement 实用例子(IN OUT 传游标) 一、Oracle 存储过程简介 Oracle 存储过程是一种可以在 Oracle 数据库中存储和执行的程序单元。存储过程可以由多种语言编写,例如 PL/SQL、...

    oracle数据库游标使用例子

    - **提取数据**:使用`FETCH`语句从游标中获取一行数据,并将其存储在变量中。 - **循环处理**:通常使用`WHILE`循环结合`%FOUND`或`%NOTFOUND`来遍历游标中的每一行。 - **关闭游标**:使用`CLOSE`语句关闭游标...

    存储过程和游标

    接下来,我们通过一个具体的例子来进一步理解如何在存储过程中使用游标。 假设有一个公司需要根据以下规则计算每位员工的加薪金额: 1. 除了总裁外,所有员工的薪水至少增加`p_min`。 2. 奖金高于$600的员工额外...

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

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

    oracle存储过程游标

    ### Oracle 存储过程与游标使用详解 在Oracle数据库管理中,存储过程与游标是两个非常重要的概念。它们可以提高数据处理的效率、增强应用程序的灵活性,并且能够简化复杂的数据库操作。本文将根据提供的内容,深入...

    存储过程和游标.doc

    在数据库编程中,存储过程和游标是两个重要的概念,特别是在PL/SQL(Procedural Language/Structured Query Language)环境中。存储过程是一组预先编译的SQL语句,它可以接受参数,执行特定任务并返回结果。游标则是...

    Oralce PLSQL存储过程之游标实践!

    本文将通过一系列由简入深的例子来介绍如何在PL/SQL存储过程中使用游标,并通过实际的代码示例来解释每个概念。 #### 二、基础知识回顾 1. **游标**:在PL/SQL中,游标是一种数据库对象,它指向一个SQL查询的结果...

    SQL工作笔记-达梦7存储过程中游标的使用(for循环 IF等)

    总结来说,这篇笔记详细地阐述了达梦数据库7中存储过程中的游标操作,包括如何定义和使用游标进行遍历,如何利用for循环简化遍历,以及如何结合IF条件语句进行逻辑判断。这些知识对于开发和维护SQL存储过程至关重要...

    oracle存储过程、游标、函数

    Oracle数据库是世界上最流行的数据库管理系统之一,它提供了丰富的编程特性,如存储过程、游标和函数,使得数据库管理和数据处理更为高效。在这个主题中,我们将深入探讨这三个关键概念及其在实际应用中的作用。 **...

    SQL游标使用例子--有注释

    ### SQL游标使用详解 #### 一、引言 在SQL编程中,游标是一种用于处理查询结果集的工具,可以实现对数据行的逐行访问。本文将通过一个具体的...总之,合理选择和使用游标可以显著提高数据库应用程序的性能和灵活性。

    利用游标返回结果集的的例子(Oracle 存储过程).doc

    在这个例子中,我们将探讨如何通过存储过程和游标返回结果集。游标允许我们在处理数据时逐行移动,这对于需要循环访问数据库记录的情况非常有用。 首先,我们创建了一个名为`types`的程序包,它定义了一个名为`...

    ORACLE 游标使用示例

    在"游标.txt"文件中,可能包含了更多关于Oracle游标的使用实例和技巧,包括游标的声明、动态游标、游标变量、游标表达式以及游标在存储过程和函数中的应用。这些内容可以帮助你更深入地理解和掌握Oracle游标,提高你...

    sql server 游标试用方法 例子

    键集游标在内存中存储了结果集的唯一键,允许插入、删除和更新;只读游标不允许对数据进行修改。 创建游标的基本步骤如下: 1. **声明游标**:首先,我们需要声明一个游标,指定其返回的数据源、游标类型、是否可...

    Oracle游标使用详解

    根据提供的标题、描述以及部分代码内容,我们可以详细探讨Oracle游标的使用方法,特别是明确游标(Explicit Cursor)和隐式游标(Implicit Cursor)的区别及其具体应用方式。 ### Oracle游标简介 在Oracle数据库中...

    游标参数的存储过程 存储过程高级教程

    游标参数则意味着将游标作为存储过程的输入或输出参数,这样可以在存储过程中控制游标的打开、移动和关闭,并传递游标的状态。 在“带游标参数的存储过程”中,通常会涉及以下步骤: 1. 声明游标:定义游标的类型,...

Global site tag (gtag.js) - Google Analytics