create or replace procedure pro_miss_history as
t_waybillNo varchar2(20);
t_checkCode varchar2(20);
t_checkTime date;
t_missTime date;
t_compareTime date;
t_compareCheckTime date;
cursor cur_task is
--查询核查次数大于1的数据
select f1.waybillcode, f1.check_zone
from ompweb.tt_doubt_miss_check f1
where f1.doubt_miss_time > sysdate - 8;
-- group by f1.waybillcode, f1.check_zone
--having count(waybillcode) > 1;
cursor cur_time is
--根据运单号和核查晚点查询遗失时间点
select tt.doubt_miss_time as missTime, tt.check_time as checkTime
from ompweb.tt_doubt_miss_check tt
where tt.waybillcode = t_waybillNo
and tt.check_zone = t_checkCode
order by tt.check_time;
begin
open cur_task;
loop
fetch cur_task
into t_waybillNo, t_checkCode;
exit when cur_task%notfound;
open cur_time;
loop
fetch cur_time
into t_missTime, t_checkTime;
exit when cur_time%notfound;
--第一次循环
if (cur_time%rowcount = 1) then
t_compareTime := t_missTime;
t_compareCheckTime := t_checkTime;
end if;
--非第一次循环
if (cur_time%rowcount > 1) and
to_number(t_missTime - t_compareCheckTime) * 24 != 16
and
to_number(t_missTime - t_compareCheckTime) * 24 != 8 then
t_compareTime := t_missTime;
end if;
t_compareCheckTime := t_checkTime;
end loop;
close cur_time;
-- 赋值“快件路由疑似遗失时间点”
update ompweb.tt_doubt_miss_history hh
set hh.route_doubt_miss_time = t_compareTime
where hh.waybillcode = t_waybillNo
and hh.check_zone_code = t_checkCode;
end loop;
close cur_task;
commit;
end pro_miss_history;
分享到:
相关推荐
本篇将深入探讨如何在Oracle存储过程中创建并返回一个结果集,并结合Java代码展示如何在应用程序中使用这个结果集。 首先,我们需要理解`OUT`参数的概念。在Oracle存储过程中,`IN`参数用于传递数据到过程,`OUT`...
在将C#的List传递给Oracle存储过程时,我们需要创建一个PL/SQL类型的数组,以便存储过程能够理解和处理C#列表中的元素。 1. **创建Oracle存储过程**: 在Oracle数据库中,创建一个接受数组作为参数的存储过程。...
1. **创建存储过程**:首先,在Oracle数据库中创建一个存储过程。 ```sql CREATE OR REPLACE PROCEDURE p_test ( p_in IN VARCHAR2, p_out OUT VARCHAR2 ) AS BEGIN -- 这里可以写入复杂的逻辑 p_out := '...
首先,我们要在Oracle数据库中创建存储过程。以下是一个简单的存储过程示例,名为`TEST`,它接收两个输入参数`arg1`和`arg2`,并返回一个sys_refcursor类型的输出参数`v_out_result`: ```sql CREATE OR REPLACE ...
创建Oracle存储过程的基本语法如下: ```sql CREATE OR REPLACE PROCEDURE 过程名 AS 声明语句段; BEGIN 执行语句段; EXCEPTION 异常处理语句段; END; ``` `AS`关键字代替了无参过程的`DECLARE`。在创建过程中,...
在Oracle数据库中,创建一个示例存储过程,如: ```sql CREATE OR REPLACE PROCEDURE get_users_by_cursor (cursor OUT SYS_REFCURSOR) AS BEGIN OPEN cursor FOR SELECT * FROM users; END; / ``` 这个存储过程...
【C#调用Oracle存储过程最简单实例】 在C#编程中,调用Oracle数据库的存储过程是一项常见的任务。Oracle存储过程是预编译的SQL和PL/SQL语句集合,可以在数据库服务器端执行,提高了应用程序的性能和安全性。下面...
需要注意的是,在调用存储过程时,需要确保存储过程已经在 Oracle 数据库中创建,并且参数的类型和数量正确地匹配。否则,可能会出现错误或异常。 在实际应用中,调用存储过程可以提高应用程序的性能和安全性,但也...
PB 调用存储过程 [Oracle][参考] ...通过本文,我们可以了解 PB 中调用 Oracle 存储过程的格式和方法,了解无入参和有入参存储过程的调用格式,了解 INOUT 类型过程的调用方式,并注意一些重要的注意事项。
在Oracle数据库中,存储过程是预编译的SQL和PL/SQL代码集合,它们可以接收输入参数、执行复杂的业务逻辑并返回结果。当需要返回的数据不仅仅是单行单列时,可以使用结构化数组来实现多行多列的结果。Java作为常用的...
4. **PL/SQL编程**:Oracle特有的PL/SQL是一种过程化语言,用于编写存储过程、函数、触发器和游标。熟悉PL/SQL的控制结构、异常处理和游标操作,可以提升数据库的性能和可维护性。 5. **表空间与分区**:表空间是...
根据给定的信息,本文将详细解释如何在Java中通过调用存储过程实现带有自定义对象作为参数的大批量数据处理,并且特别关注了入参为二维数组的批量插入以及出参为自定义对象(二维数组)的情况。此外,还将讨论与...
在Java编程中,调用Oracle数据库的存储过程是常见的任务,尤其在处理复杂业务逻辑或数据操作时。本文将详细讲解如何使用Java调用Oracle存储过程,并提供示例代码。 首先,我们需要了解Java中用于与数据库交互的核心...
- `subroutine`表示过程无返回值。 - `rpcfunc`为固定写法。 - `ref`关键字用于指定参数为`INOUT`类型。 通过以上详细说明,我们可以清晰地了解如何在PB中根据不同情况调用Oracle存储过程,包括无入参、有入参及IN...
无参存储过程是最简单的存储过程形式,不接收任何参数。创建语法如下: ```sql CREATE OR REPLACE PROCEDURE NoParPro AS BEGIN -- 执行逻辑 END; ``` #### 2.2 带参存储过程 带参存储过程可以根据不同的参数提供...
在本节中,我们通过一个具体的例子来详细介绍如何使用`CallableStatement`来调用Oracle数据库中的无返回值存储过程,并执行插入操作。 ##### 存储过程定义 首先,我们需要创建一个简单的存储过程`PRO_1`,该存储...
在Java编程中,我们可以使用JDBC(Java Database Connectivity)来调用这些Oracle存储过程。在提供的Java代码示例中,我们首先加载Oracle的JDBC驱动,然后建立到数据库的连接。这里使用了`CallableStatement`来执行...
1. 用无参过程实现“Hello World!”程序 2. 用带输入参数的过程向表中插入记录 3. 用带输出参数的过程查询表中的记录数 4. 使用带输入输出参数的过程查询记录是否存在 5. 使用函数查询部门信息 6. 使用程序包封装...