`

存储过程实例

    博客分类:
  • sql
 
阅读更多
create or replace procedure proc_reback_72Hour(start_time in varchar2, --分诊开始时间
                                               end_time   in varchar2, --分诊结束时间
                                               query_user in number, --查询工号
                                               query_time in date, --查询时间
                                               flag       out varchar2 --返回值:1成功  0失败
                                               ) is
  cursor cur_patient is
    select distinct patient_id
      from ws_precheck
     where created_time >= to_date(start_time, 'yyyy-mm-dd ,hh24:mi:ss')
       and created_time < to_date(end_time, 'yyyy-mm-dd, hh24:mi:ss');
  c_patient cur_patient%rowtype;
  v_sum     number := 0;

  cursor cur_arrivel(v_id varchar2) is
    select f.precheck_id, f.arrivel_time
      from ws_precheck p, ws_first_page f
     where p.id = f.precheck_id
       and p.patient_id = v_id
       and f.arrivel_time >= to_date(start_time, 'yyyy-mm-dd ,hh24:mi:ss')
       and f.arrivel_time < to_date(end_time, 'yyyy-mm-dd, hh24:mi:ss')
     order by f.arrivel_time desc;
  c_arrivel      cur_arrivel%rowtype;
  v_count        number(4);
  v_index        number(1);
  v_precheck_id1 number(8);
  v_precheck_id2 number(8);
  v_time1        date;
  v_time2        date;

  cursor cur_visit(v_precheck_id number) is
    select p.id, p.name, p.card, p.patient_id, p.cause, f.arrivel_time
      from ws_precheck p, ws_first_page f
     where p.id = f.precheck_id
       and f.precheck_id = v_precheck_id
       and f.arrivel_time >= to_date(start_time, 'yyyy-mm-dd,hh24:mi:ss')
       and f.arrivel_time < to_date(end_time, 'yyyy-mm-dd,hh24:mi:ss');
  c_visit cur_visit%rowtype;

begin
  flag := '1';

  delete from rpt_return_visit r where r.query_user = query_user;

  for c_patient in cur_patient loop
    if c_patient.patient_id is not null then
      select count(*)
        into v_count
        from ws_precheck p
       where p.created_time >=
             to_date(start_time, 'yyyy-mm-dd ,hh24:mi:ss')
         and p.created_time < to_date(end_time, 'yyyy-mm-dd, hh24:mi:ss')
         and p.patient_id = c_patient.patient_id;
      if v_count > 1 then
        v_index := 0;
        for c_arrivel in cur_arrivel(c_patient.patient_id) loop
          v_index := v_index + 1;
          if v_index = 1 then
            v_precheck_id1 := c_arrivel.precheck_id;
            v_time1        := c_arrivel.arrivel_time;
          elsif v_index = 2 then
            v_precheck_id2 := c_arrivel.precheck_id;
            v_time2        := c_arrivel.arrivel_time;
            exit;
          end if;
        end loop;
        if v_time1 - v_time2 <= 3 then
          v_sum := v_sum + 1;
          open cur_visit(v_precheck_id1);
          fetch cur_visit
            into c_visit;
          insert into rpt_return_visit
          values
            (c_visit.id,
             c_visit.patient_id,
             c_visit.card,
             c_visit.name,
             c_visit.arrivel_time,
             c_visit.cause,
             query_user,
             query_time);
          close cur_visit;
        end if;
        --重置
        v_count        := null;
        v_precheck_id1 := null;
        v_precheck_id2 := null;
        v_time1        := null;
        v_time2        := null;
      end if;
    end if;
 
    if v_sum >= 500 then
      commit;
      v_sum := 0;
    end if;
 
  end loop;

exception
  when others then
    flag := '0';
 
end proc_reback_72Hour;
分享到:
评论

相关推荐

    mysql存储过程实例

    MySQL 存储过程实例 MySQL 存储过程实例详细介绍了 MySQL 存储过程的开发步骤,本节将通过具体的实例讲解 PHP 是如何操纵 MySQL 存储过程的。 创建存储过程 存储过程的创建是 MySQL 存储过程的基础,MySQL 5.0 ...

    oracle的一个简单存储过程实例

    在这个“Oracle的一个简单存储过程实例”中,我们可以看到如何在Oracle环境中创建、调用和管理存储过程。下面将详细讲解这个主题。 首先,`c.sql`、`b.sql`和`student.sql`可能是包含存储过程定义的脚本文件。这些...

    db2 存储过程实例

    在数据库管理领域,DB2是IBM推出...总结,DB2的存储过程是数据库开发的重要工具,通过学习和实践这些存储过程实例,不仅可以掌握基本操作,还能深入理解数据库管理和编程的高级概念,为今后的数据库工作打下坚实基础。

    java调用存储过程实例

    ### Java调用存储过程实例:详解 #### 存储过程简介 存储过程是一种在数据库中编写的SQL程序,可以接受输入参数,执行一系列操作,并返回结果或输出参数。它们可以提高应用程序的性能、安全性和复用性。在Oracle...

    MySQL存储过程实例教程

    ### MySQL存储过程实例教程 #### 存储过程概念与优势 存储过程,作为数据库中一种预编译的SQL语句集合,旨在实现特定功能并存储于数据库内,用户仅需指定其名称及必要参数即可调用执行。这种设计极大地简化了...

    SQL存储过程实例.doc

    在这个实例中,我们看到一个名为`Sum_wage`的存储过程,它的主要目的是对`ProWage`表中的工资进行加薪操作。 首先,存储过程的创建使用了`CREATE PROCEDURE`语句,定义了一个名为`Sum_wage`的过程,并接受三个参数...

    oracle存储过程实例(1)

    ### 存储过程实例分析 给定的存储过程示例名为`CreateProcedureAtoC`,主要功能是将输入的金额转换为中文大写形式。这个过程展示了如何在Oracle中定义和使用存储过程,包括变量声明、条件判断、循环结构等关键要素...

    存储过程实例(初学者)

    **实例3**:创建一个名为`temp_sale`的存储过程,将`Product`和`Order`两个表按产品编号连接,形成一个临时表`#temptable`,包含编号、产品名、客户名、订金和总金额(订金乘以订数): ```sql CREATE PROC temp_...

    sysbase 存储过程实例

    ### Sysbase 存储过程实例详解 #### 一、存储过程概述 存储过程是一种数据库对象,在Sybase(这里应指Sybase SQL Server)这样的数据库管理系统中,存储过程是一组预编译并存储在数据库服务器上的SQL语句和流程...

    C#存储过程实例

    在提供的压缩包文件"C#存储过程简单实例"中,可能包含了演示如何在C#中调用存储过程的代码示例。你可以参考这些示例,结合自己的数据库环境进行实践,以便更好地理解和掌握这一技术。记住,实践是检验理论的最好方式...

    oracle存储过程实例

    3. **创建存储过程实例** - 创建一个名为`stu_proc`的存储过程,获取`sno`为1的学生的`sname`并显示。 - 可以定义过程参数,如`IN`(输入参数)、`OUT`(输出参数)或`IN OUT`(输入输出参数)。 4. **调用存储...

    完美翻页存储过程实例

    在数据库管理中,"完美翻页"通常指的是在...总的来说,"完美翻页存储过程实例"是一个旨在提供高性能、用户体验优良的数据库分页解决方案,它结合了存储过程的优势,使得在大量数据中查找和浏览信息变得更加便捷和流畅。

    MYSQL的存储过程实例文档

    ### MySQL存储过程详解 #### 一、存储过程概述 存储过程是一种特殊类型的SQL代码集合,它们预先被编译并存储在数据库服务器上。用户可以通过指定存储过程名称并提供必要的参数来执行这些存储过程。这种机制提供了...

    oracle 存储过程实例

    oracle 存储过程 实例 教程 oracle 存储过程 实例 教程 对于初学者来说是很好的例题

    sql存储过程实例

    简单的oracle存储过程demo,可以参照写法写个存储过程玩玩

    存储过程实例解释 事务实例解释 C#中使用带返回值的存储过程

    ### 存储过程实例解释与事务处理 #### 一、简单存储过程的创建与调用 首先,我们来看一个简单的存储过程示例:`dbo.testProcedure_AX`。 ```sql CREATE PROCEDURE dbo.testProcedure_AX AS select userID from ...

    存储过程实例 java

    "Oracle存储过程实例.pdf"可能包含了一系列实际问题的解决方案,通过存储过程实现,这可以帮助你在遇到类似问题时有所参考。这些实例可能涵盖了从简单的数据操作到复杂的数据处理任务,让你能够更好地理解存储过程在...

    SQL存储过程实例.rar

    在这个“SQL存储过程实例.rar”压缩包中,我们很可能会找到一系列关于如何设计、创建、执行和管理SQL存储过程的实际示例。 SQL存储过程的优点在于它们可以提高性能,因为它们只需要编译一次,然后在后续的调用中...

    c#多条件查询存储过程实例

    ### C#多条件查询存储过程实例 #### 一、引言 在开发应用程序时,数据库查询操作是非常常见的需求之一。为了提高查询效率和代码的可维护性,使用存储过程来进行多条件查询是一种非常有效的方法。本文将通过一个具体...

Global site tag (gtag.js) - Google Analytics