今天看了一下匿名块、函数、过程等,想起原来用过光标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
那就把上面说到的功能实现,代码如下:
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;
/
分享到:
相关推荐
通常,我们使用 fetch some_cursor into var1, var2 形式来获取游标数据,当游标中的记录数不多时不打紧。然而,当游标中的记录数非常大时,这种方式的效率将变得非常低下。 Oracle 8i 起,Oracle 为我们提供了 ...
本篇文章将深入探讨Oracle临时表的使用,并通过一个使用游标(CURSOR)返回结果集的例子来进一步理解其用法。 首先,让我们了解如何创建Oracle临时表。临时表的创建语法与普通表类似,但我们需要使用`GLOBAL ...
本文将详细解析一个特定的Oracle函数——`NS_DNAF_GetPaidUpDeposit`,该函数旨在执行查询操作,并将结果插入到一个临时表中。通过分析该函数的结构、参数以及执行逻辑,我们可以更好地理解其工作原理及其应用场景。...
【标题】"Fetch一个PHP的IMAP库"指的是在PHP编程环境中使用的一个专门用来处理IMAP(Internet Message Access Protocol)协议的库。IMAP是一种标准的邮件访问协议,允许用户从邮件服务器上检索电子邮件,而无需下载...
`electron-main-fetch`的工作原理是通过将Fetch API的实现注入到Electron的主要进程中,使得开发者可以在Node.js上下文中使用这一强大的网络请求工具。这不仅简化了代码的编写,还确保了在主进程中的网络请求行为与...
4. 在fetch成功返回后,调用`.blob()`方法将响应体转换为一个Blob对象,因为文件下载本质上就是下载一个二进制对象。 5. 创建一个新的`<a>`元素,并设置其`href`属性为blob对象的URL。 6. 从响应头`Content-...
本文将详细解释如何在PL/SQL中利用`BULK COLLECT`与游标配合实现批量`FETCH`,以及相关的使用技巧。 首先,让我们看一个简单的示例。假设有一个名为`t_depart`的表,存储部门信息,包含`depart_code`和`depart_name...
在这个场景下,我们可以将全局的fetch属性替换为一个getter函数,每次访问fetch时,实际上是在调用我们定义的逻辑,从而实现拦截。 以下是一个简单的示例,展示了如何使用`defineProperty`来实现fetch请求的拦截: ...
在netpro中,我们需要创建两个连接,一个是FETCH连接,另一个是WRITE连接。在创建这两个连接时,我们不需要设置通信对方的IP和端口号,只需要指定对应的本地端口号。在Options标签内,我们需要设置mode(模式)为...
**游标(Cursor)**是Oracle数据库中的一个重要特性,主要用于处理SQL查询返回的结果集。它允许应用程序以更灵活的方式逐行处理查询结果,而非一次性处理整个结果集。这种方式非常适合那些需要逐条处理数据的应用场景...
本项目可能是一个关于如何在Laravel环境中利用fetch方法处理数据的示例或者教程。让我们深入探讨一下Laravel开发中的fetch方法及相关知识点。 1. **Eloquent ORM**:Laravel的Eloquent是内置的ORM,它提供了简洁的...
在“一个微小的ES6 fetch包装”中,我们探讨的是如何通过简单的封装,使得`fetch`更加易用,同时保持其灵活性。 首先,`fetch` API的基本用法是接收一个URL和一个可选的配置对象。例如,获取JSON数据通常需要设置`'...
在Oracle PL/SQL块中,可以通过`CURSOR`关键字明确声明一个游标。声明游标时,需要指定查询语句,该查询语句定义了游标的数据源。 ##### 示例: ```sql DECLARE CURSOR mycur IS SELECT * FROM books; -- 声明...
标题中的“Node.js-node-fetch”指的是Node.js的一个第三方模块,名为`node-fetch`。这个模块的主要功能是将浏览器环境中的`window.fetch`API引入到Node.js和io.js环境中,使得在服务端也能方便地进行HTTP请求操作。...
在SQL Server中,遍历表中的记录是数据库操作中常见的一种任务,特别是在处理逐行处理数据或执行复杂逻辑时。本文将深入探讨两种方法:使用表变量和使用游标。 首先,我们来看如何通过表变量来遍历记录。表变量在...
标题中的“mysql任意数据库中在系统所有表中所有字段查询符合任意字符的存储过程”涉及到的是MySQL数据库管理和SQL查询技术,特别是如何通过存储过程来实现跨数据库、跨表的复杂查询。存储过程是预编译的SQL语句集合...
Oracle游标是数据库管理系统中非常重要的一个概念,它在处理SQL查询时扮演着核心角色,尤其是在需要逐行处理结果集的场景下。Oracle游标允许我们动态地控制和操作查询的结果,使得我们可以按需处理每一行数据,而不...
`UPDATE`是SQL中的一个关键字,用于修改现有表中的数据。`update_cma.sql`和`update_cma2.sql`可能包含了更新特定表(如CMA表)记录的PL/SQL过程。这些脚本可能涉及到条件判断,以确保只更新满足特定条件的行,或者...