0 0

oracle 存储过程 插入个数达到某个值时方可插入0

create or replace procedure proc_test is
V_TOTAL NUMBER(10);
begin
  insert into test (remark, time, in, out)
    select zci.remark,
           zc.time+1/24/6,
           in,
           out
       from test_bak zc
      left join test_info zci on zc.id = zci.id
     where zci.remark is not null
     and zc.time > (select nvl(max(time)-1/24/6, sysdate-8)
                        from test);
      commit;
    
     select count(*) into V_TOTAL from test where time =
(select max(time) from test);
     if V_TOTAL <> 100 then
        delete from test where time = (select max(time) from test);
        commit;
     end if;
end proc_test;



以上是我写的存储过程,每次插入到test表中会有100条记录,是按时间来插入的,但会出现每次还没全部把100条记录插入到test表中,就已经无法插入(是按大于test表中最大时间方可插入) 所以我做了个判断,当不到100条记录时,就把刚插入的那个时间点的记录都删除了  可以不行啊  要怎么弄


2012年11月28日 09:02

1个答案 按时间排序 按投票排序

0 0

既然你的insert的原数据是来源那个子查询,那你就在那个子查询结果有100个的时候再去insert行不行呀?

create or replace procedure proc_test is
  V_TOTAL NUMBER(10);
begin
  select count(*)
    into V_TOTAL
    from (select zci.remark, zc.time + 1 / 24 / 6,in, out
            from test_bak zc
            left join test_info zci
              on zc.id = zci.id
           where zci.remark is not null
             and zc.time >
                 (select nvl(max(time) - 1 / 24 / 6, sysdate - 8) from test));

  if V_TOTAL = 100 then
    insert into test
      (remark, time, in, out)
      select zci.remark, zc.time + 1 / 24 / 6,in, out
        from test_bak zc
        left join test_info zci
          on zc.id = zci.id
       where zci.remark is not null
         and zc.time >
             (select nvl(max(time) - 1 / 24 / 6, sysdate - 8) from test);
    commit;
  end if;
end proc_test;

2012年11月28日 09:46

相关推荐

    oracle 批量插入存储过程

    oracle 批量插入存储过程,性能非常高!

    oracle 批量插入数据存储过程

    oracle 批量插入数据存储过程。亲测好用。支持 plsql ,toad,等数据库分析软件。主要包括变量的定义,循环及游标的使用等, 亲测好用

    向Oracle数据库插入Clob大段文本解决方法

    总之,向Oracle数据库插入或更新Clob大段文本是一个涉及SQL语句构建、参数类型设置及值赋值等多个方面的过程。正确理解和掌握这些细节,能够帮助开发者更高效、安全地管理数据库中的大量文本数据。

    oracle存储过程学习经典入门

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

    C++Oracle存储过程批量插入

    Oracle存储过程是预编译的SQL语句集合,它可以提高执行效率,减少网络通信,并且能够封装复杂的业务逻辑。 首先,我们需要理解C++与Oracle数据库交互的基本原理。通常,这会通过一个名为ODBC(Open Database ...

    ORACLE存储过程中定义数组并且判断某值是否在数组中.txt

    ORACLE存储过程中定义数组并且判断某值是否在数组中。有例子可執行、 、有例子可執行、

    Python使用cx_Oracle调用Oracle存储过程的方法示例

    本文实例讲述了Python使用cx_Oracle调用Oracle存储过程的方法。分享给大家供大家参考,具体如下: 这里主要测试在Python中通过cx_Oracle调用PL/SQL。 首先,在数据库端创建简单的存储过程。 create or replace ...

    oracle数组存储过程批量插入

    在Java示例中,我们还看到了如何为大数据量插入创建Oracle对象类型和数组类型,以及相应的存储过程。这种方式允许我们在单次调用中插入大量记录,显著提高了效率。在处理大量数据时,批量操作比逐条操作更高效,因为...

    存储过程(循环插入数据)

    在数据库管理领域,存储过程是预编译的SQL语句集合,它们被封装在一个单一的逻辑单元中,便于管理和重复使用。在Oracle数据库系统中,存储过程是强大的工具,能够执行复杂的业务逻辑和数据处理任务。本文将深入探讨...

    C# 传入自定义列表List 到Oracle存储过程

    在将C#的List传递给Oracle存储过程时,我们需要创建一个PL/SQL类型的数组,以便存储过程能够理解和处理C#列表中的元素。 1. **创建Oracle存储过程**: 在Oracle数据库中,创建一个接受数组作为参数的存储过程。...

    oracle 存储过程 函数 dblink

    在Oracle数据库中,存储过程是一种预编译好的SQL代码集合,它可以接受输入参数、返回单个值或多个值,并能够执行复杂的数据库操作。存储过程提高了代码的重用性和执行效率,同时也便于实现复杂的业务逻辑。 #### 二...

    oracle 存储过程导出excel

    oracle 存储过程导出excel oracle 存储过程导出excel oracle 存储过程导出excel oracle 存储过程导出excel oracle 存储过程导出excel

    ORACLE存储过程最全教程

    Oracle存储过程是数据库管理系统Oracle中的一个关键特性,它允许开发者编写一组预编译的SQL和PL/SQL语句,以实现特定的业务逻辑或数据库操作。这篇教程将深入讲解Oracle存储过程的各个方面,帮助你从基础到高级全面...

    oracle存储过程常用技巧

    Oracle存储过程常用技巧 Oracle存储过程是一种强大的数据库对象,它可以帮助开发者简化复杂的业务逻辑,并提高数据库的安全性和性能。在 Oracle 中,存储过程是一种特殊的 PL/SQL 程序,它可以接受输入参数,执行...

    oracle 事务 回滚 存储过程

    ### Oracle存储过程 存储过程是在数据库中预编译的一组SQL语句,用于执行复杂的业务逻辑或数据操作。它们可以接受输入参数,执行一系列数据库操作,并返回结果。在Oracle中,存储过程使用PL/SQL编写,可以在数据库...

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

    Oracle存储过程是数据库管理系统中的一种重要特性,它允许开发者编写包含一系列SQL语句和PL/SQL块的可重用代码段。在这个“Oracle的一个简单存储过程实例”中,我们可以看到如何在Oracle环境中创建、调用和管理存储...

    hibernate query调用oracle存储过程

    以下是一个简单的示例,展示了如何调用一个不带参数的Oracle存储过程: ```java Session session = sessionFactory.openSession(); Transaction transaction = session.beginTransaction(); session....

    批量修改Oracle序列值的存储过程

    这篇博客分享的是一个自定义的存储过程,用于批量修改Oracle序列的当前值(CURRENT VALUE)。 首先,我们需要理解Oracle序列的基本结构和操作。序列由CREATE SEQUENCE语句创建,如: ```sql CREATE SEQUENCE seq_...

    oracle存储过程加密破解

    oracle存储过程加密破解 0

    SQLServer存储过程转为oracle存储过程的工具

    可以将SQL Server存储过程转为oracle存储过程的工具

Global site tag (gtag.js) - Google Analytics