oracle forall

select * bulk collect
    into r_115
    from TZTJ_CL0115
   where nf = v_nf
     and yf = v_yf
     and dwbm = ‘1‘
     and lb = ‘项目‘;
  for i in 1 .. r_115.count loop
    select *
      into r_tzkt
      from tztj_tz_kt
     where nf = v_nf
       and yf = v_yf
       and xmid = r_115(i).xmid;
 
    r_115(i).col53 := r_tzkt.zygzl_ew;
    r_115(i).col54 := r_tzkt.zygzl_sw;
    r_115(i).col55 := r_tzkt.zygzl_ytjks;
    r_115(i).col56 := r_tzkt.zygzl_ytjjc;
    --r_115(i).col57 := r_tzkt.erp_hj;
    --r_115(i).col58 := r_tzkt.erp_wht_xj;
    --r_115(i).col58 := r_tzkt.erp_wht_xj;
    r_115(i).col60 := r_tzkt.erp_hj;
    r_115(i).col61 := r_tzkt.erp_wht_xj;
    r_115(i).col62 := r_tzkt.erp_zj_ytj;
    r_115(i).col70 := r_tzkt.tzwc_hj;
    r_115(i).col71 := r_tzkt.tzwc_wht_xj;
    r_115(i).col72 := r_tzkt.tzwc_zj_ytj;
  end loop;
  delete from tztj_cl0115
   where nf = v_nf
     and yf = v_yf
     and lb = ‘项目‘;
  forall i in 1 .. r_115.count
    INSERT INTO tztj_cl0115 VALUES r_115 (i);
  commit;

时间: 2024-10-30 02:40:48

oracle forall的相关文章

Oracle 的 FORALL用法(批量增删改)

FORALL语句的一个关键性改进,它可大大简化代码,并且对于那些要在PL/SQL程序中更新很多行数据的程序来说,它可显著提高其性能. 1: 用FORALL来增强DML的处理能力 Oracle为Oracle8i中的PL/SQL引入了两个新的数据操纵语言(DML)语句:BULK COLLECT和FORALL.这两个语句在PL/SQL内部进行一种数组处理 :BULK COLLECT提供对数据的高速检索,FORALL可大大改进INSERT.UPDATE和DELETE操作的性能.Oracle数据库使用这些

Oracle数据库之FORALL与BULK COLLECT语句

   我们再来看一下PL/SQL块的执行过程:当PL/SQL运行时引擎处理一块代码时,它使用PL/SQL引擎来执行过程化的代码,而将SQL语句发送给SQL引擎来执行:SQL引擎执行完毕后,将结果再返回给PL/SQL引擎.这种在PL/SQL引擎和SQL引擎之间的交互,称为上下文交换(context switch).每发生一次交换,就会带来一定的额外开销. FORALL,用于增强PL/SQL引擎到SQL引擎的交换. BULK COLLECT,用于增强SQL引擎到PL/SQL引擎的交换.(前面我们已经

ORACLE批量绑定FORALL与BULK COLLECT

FORALL与BULK COLLECT的使用方法: 1.使用FORALL比FOR效率高,因为前者只切换一次上下文,而后者将是在循环次数一样多个上下文间切换. 2.使用BLUK COLLECT一次取出一个数据集合,比用游标条取数据效率高,尤其是在网络不大好的情况下.但BLUK COLLECT需要大量内存. 例子: Sql代码   create table test_forall ( user_id number(10), user_name varchar2(20)); select into 中

oracle 优化之批量处理bulk correct 和 forall

世风之狡诈多端,到底忠厚人颠扑不破: 末俗以繁华相尚,终觉冷淡处趣味弥长. BULK   COLLECT运用 在游标中运用 declare cursor C_CUR is SELECT * FROM  T_TEST; TYPE T_TYPE IS TABLE OF  T_TEST%ROWTYPE;----需要定义一个数据记录的类型 C_REC  T_TYPE; begin open C_CUR ; loop FETCH  C_CUR BULK COLLECT INTO C_REC LIMIT 5

Oracle 11g Articles

发现一个比较有意思的网站,http://www.oracle-base.com/articles/11g/articles-11g.php Oracle 11g Articles Oracle Database 11g: New Features For Administrators OCP Exam Articles Oracle Database 11g Release 1: Miscellaneous Articles Oracle Database 11g Release 2: Misc

Oracle的特殊数据类型

1.%TYPE 允许用户动态地将数据库中某一列的数据类型与PL/SQL中某个变量关联.语法如下: variable_name table.column%TYPE 2.%ROWTYPE 允许用户定义单一的变量,该变量包含数据库表的每一列的多个变量.语法规则如下: variable_name table%ROWTYPE 一旦定义了这种变量,就可以使用 如下的方式来访问各个列: row_variable.column_name 另外:可以使用%ROWTYPE类型的变量向数据库表中插入或更新整个记录,方

ORACLE数据库编程

第一章 Oracle数据库基本概念 一.介绍 Oracle数据库系统是美国Oracle(甲骨文)公司提供的以分布式数据库为 核心的一组软件产品,是目前最流行的客户/服务器(Client/Server,C/S)或 浏览器/服务器(Browser/Server,B/S)体系结构的数据库之一.二.特点1.完整的数据管理功能:数据的大量性数据的保存的持久性数据的共享性数据的可靠性Oracle优点:可用性强可扩展性强数据安全性强稳定性强三.Oracle数据库的辑逻结构1.表空间一个数据库被分割为数个被称作

[Oracle系列整理04] oracle pl/sql 基础

PL/SQL块中只能直接嵌入SELECT,DML(INSERT,UPDATE,DELETE)以及事务控制语句 (COMMIT,ROLLBACK,SAVEPOINT),而不能直接嵌入DDL语句(CREATE,ALTER,DROP)和DCL语句 (GRANT,REVOKE) 1.检索单行数据    1.1使用标量变量接受数据  v_ename emp.ename%type;  v_sal   emp.sal%type;  select ename,sal into v_ename,v_sal fro

oracle中动态SQL使用详细介绍

Oracle编译PL/SQL程序块分为两个种:通常静态SQL采用前一种编译方式,而动态SQL采用后一种编译方式,需要了解的朋友可以参考下 1.静态SQLSQL与动态SQL Oracle编译PL/SQL程序块分为两个种:其一为前期联编(early binding),即SQL语句在程序编译期间就已经确定,大多数的编译情况属于这种类型:另外一种是后期联编(late binding),即SQL语句只有在运行阶段才能建立,例如当查询条件为用户输入时,那么Oracle的SQL引擎就无法在编译期对该程序语句进