利用cursor及fetch将一个表中符合条件的记录拷贝到另一个表中
今天看了一下匿名块、函数、过程等,想起原来用过光标cursor及fetch,也是快忘得差不多了,那今天就来试试把一个表里面的数据拷贝到另外一个结构完全相同的表里面,不过,有一个条件就是原表的ID必须为5的倍数的才能够被插入,否则不取。
先来复习一点东西:
1、匿名块的格式基本就如下面所示
[declare]
/*变量定义区,也可做初使化等*/
begin
/*开始区,执行顺序SQL语句*/
[exception]
/*异常处理区,可进行异常处理,异常的抛出使用raise关键字*/
end;
其中方框里面的为可选项,不作为必须。
2、fetch
1)首先要定义cursor,如cursor id_cur is select id from components
2)然后打开cursor:open id_cur
3)第三是使用fetch从cursor并保存到变理中
4)第四关闭cursor
那就把上面说到的功能实现,代码如下:
Sql代码
declare
num_id integer;/*定义变量*/
sql_str varchar(1000);
cursor id_cur is select id from components;/*用光标取ID*/
begin
open id_cur;/*打开光标执行*/
loop/*一直执行下去*/
fetch id_cur into num_id;/*根据光标,取出ID号到变量中*/
exit when id_cur%notfound;/*没有记录时就退出*/
if mod(num_id,5)=0 then/*如果记录ID为5的倍数,就执行下面的插入*/
/*下面生成一条SQL语句*/
sql_str:='insert into components2 select * from components where id='|| num_id;
/*立即执行生成的SQL语句*/
execute immediate sql_str;
end if;/*记住:条件的结束后都要加结束束‘;’*/
end loop;
close id_cur;/*关闭光标*/
end;
/
分享到:
相关推荐
Oracle大数据量操作性能优化是指在处理大量数据时,如何提高 Oracle 数据库的性能。该优化技术涉及到多个方面,包括分区、Direct Insert、并行和排序处理等。 分区是 Oracle 中的一种优化技术,可以将大型表分割成...
copy from username/password@oraclename append table_name1 using select * from table_name2; ``` 2. **常规插入方式** - 直接使用`INSERT INTO...SELECT FROM`语句将数据从一个表插入到另一个表。 - 为了...
根据给定文件的信息,“Oracle插入大量数据”的主题围绕着几种有效的策略展开,旨在提升Oracle数据库在大数据量场景下的性能表现。 ### 高速存储设备的应用 首先提及的是采用高速的存储设备来提升读写能力。EMC和...
通过使用Oracle临时表,可以有效地解决大数据量带来的性能问题。会话级临时表适用于整个会话期间需要持续访问的数据,而事务级临时表适用于单个事务内的数据处理。理解这两种临时表的区别和使用场景对于优化数据库...
WHERE (字段1, 字段2) IN (SELECT 字段1, 字段2 FROM 临时表) ``` 4. 保留最新记录: 若要保留每个重复组的最新记录,可以利用Oracle的隐含ROWID列。查询非最大ROWID的记录以保留最新的: ``` DELETE FROM ...
insert into y(字段 1,字段 2) select 字段 1,字段 2 from x ``` 4. 不同用户之间的表数据复制: ```sql insert into B.newTable(select * from A.oldTable) ``` 如果需要加条件限制,比如复制当天的 A.oldTable ...
- **大表分区**:当表大小超过 2GB 时,考虑对其进行分区。 - **历史数据管理**:对于包含大量历史数据的表,新数据通常被添加到最新的分区中。例如,只有当前月份的数据是可更新的,而其他 11 个月的数据只读。 **...
### Oracle2表基本操作知识点详解 #### 一、Oracle 表的基本规则与数据类型 **1. 表名规则:** - **必须以字母开头**:表名的第一个字符必须是字母(A-Z 或 a-z)。 - **长度限制**:表名的最大长度不得超过30个...
6. **并行执行**:利用并行提示(PARALLEL HINT)可以充分利用多CPU资源,提高DML操作的效率,尤其是对于大表的CTAS(CREATE TABLE AS SELECT)和INSERT操作。 7. **Direct-Path插入**:使用`/*+APPEND*/`提示进行...
在Oracle数据库中,删除重复数据是一项常见的数据维护任务,尤其当表设计初期未充分...使用临时表可以显著提高处理效率,尤其是对于大数据量的表。在实际操作中,确保在删除数据前做好备份,以免因误操作导致数据丢失。
2. **性能考量**:大量数据的删除可能会严重影响数据库性能,建议在低峰时段执行此类操作。 3. **测试**:在实际环境中删除重复数据前,最好在一个测试环境中先模拟一遍整个流程,以确保不会发生意料之外的问题。 ...
当使用`DELETE`命令误删除表中的数据后,如果没有立即执行其他大量更新操作,那么被删除的数据块可能还没有被覆盖。此时,可以利用Oracle提供的闪回功能直接恢复数据。 **2. 具体步骤** - **确定删除时间点**:...
在数据库管理中,高效地插入大量数据是一项关键任务,尤其对于大数据处理和分析而言。本文主要分享了在非生产环境中快速、大批量插入数据的一些经验技巧,这些技巧主要适用于Oracle数据库系统。 首先,基础的`...
这种方式虽然简单,但对于大数据量的表来说效率较低,可能会导致性能问题。 **方法2:创建临时表后再删除** 1. **创建临时表并插入重复记录** ```sql CREATE TABLE 临时表 AS ( SELECT 字段1, 字段2, COUNT(*) ...
通过对Oracle表分区的深入理解与实践,可以有效地提高数据库性能,特别是在处理大量数据时。本文提供的实例不仅涵盖了基本的分区操作,还展示了如何利用分区消除和并行操作来进一步优化查询性能。希望这些内容能够...
1. 创建Oracle表结构:首先,你需要根据XML文件中的数据结构创建对应的Oracle表。确保表中的字段类型与XML元素的数据类型相匹配。 2. 准备控制文件:控制文件定义了SQL*Loader如何解析和加载数据。在文件中,你需要...
- `SELECT * FROM table1, table2 WHERE table1.column BETWEEN value1 AND value2;` **7.2 自连接** - **用途:** 在同一张表中基于不同的条件进行查询。 - **语法示例:** - `SELECT * FROM table t1, table ...
INTO table1 VALUES (value1, value2) INTO table2 VALUES (value3, value4) SELECT * FROM dual; ``` 三、BULK COLLECT 和 FORALL 当需要导入大量数据时,使用BULK COLLECT和FORALL语句能提高性能。首先,查询或...
在Oracle数据库管理中,对于大数据量的处理是常见且重要的任务之一。特别是在需要对大量数据进行高效查询和更新操作时,如何优化性能成为了开发人员和技术团队必须面对的挑战。本文将基于提供的示例代码,深入探讨...
**原理**:利用Oracle提供的闪回方法,在删除数据之后还未执行大量其他操作的情况下,可以通过闪回的方式直接找回被删除的数据。 **步骤**: 1. **确定删除数据的时间**:需要知道数据被删除的具体时间点。 2. **...