您的位置:首页 > 数据库 > Oracle

【oracle】游标使用 --简单案例--菜鸡教程

2018-01-31 20:30 169 查看

【oracle】游标使用 –简单案例CURSOR 菜鸡教程

-先说下我们今天要干的事情:

使用 游标 实现自动从 test1 将电话号码 插入 test2 表。

叼哥 肯定会说,这跟游标有个 吊毛 关系,非也,我们如果想批量 从test1 表中,将数据批量插入test2 中,必然会使用到游标。

首先肯定我们先要知道,什么是游标,游标有什么作用,开始lz 也是个屌丝,压根不知道这是搞毛用的,为此还被之前我们组的 大佬 冷嘲热讽 了一番。

其实说白了,也没什么大不了的,听起来高大上的东西, 就类似 java 的集合list,但是相比之下又有所不同,又有点像 是一个 对象 ,但又跟对象有点不同, 说白了其实就是
集合跟对象的合体
结合了集合list和对象的
优点
下边会具体说明。


1.先创建两张测试表

-- 创建表test1
create table test_1(
id varchar2(32),
tel varchar2(100)
);
-- 设置主键
alter table test_1
add constraint PK_test_1 primary key (ID);

-- 创建表test2
create table test_2(
id number(5),
tel varchar2(100)
);
-- 设置主键
alter table test_2
add constraint PK_test_2 primary key (ID);
-- 创建一些测试数据
insert into test_1 values((select sys_guid() from dual),'15691043321');
insert into test_1 values((select sys_guid() from dual),'15691043322');


如图:



我们查看下
test_1
的数据



创建一个自增序列,也可以不创建,我这是为了给你们清楚展示,数据数量

create sequence test_2_seq start with 1 increment by 1; -- 创建一个test_2_seq x的序列


-
游标 SQL


DECLARE
CURSOR test_1_cur IS -- test_1_cur 游标名称
SELECT T.TEL FROM test_1 T; -- 查询test_1 数据
tel_list test_1_cur%ROWTYPE;
BEGIN
OPEN test_1_cur;  -- 打开游标
LOOP --   循环游标
FETCH test_1_cur -- 遍历游标
INTO tel_list; --tel_list  查询出来的所有结果存放在这个里边
EXIT WHEN test_1_cur%NOTFOUND;
if  tel_list.tel is not null then-- 查询出来后结果不为空的 插入到test_2表中
INSERT INTO test_2  VALUES
(test_2_seq.nextval,tel_list.tel);--这就是为什么结合了java list和对象的原因了,既能遍历,又能用对象方式取值
end if;
COMMIT; --  提交
END LOOP; -- 结束循环
CLOSE test_1_cur; -- 关闭游标

END;


最后我,我们看下结果



脚注

各位看官老爷,看来有没有收获,欢迎大家相互探讨,如有不足支出,还望不吝指教1.

———–笑皮脸 O(∩_∩)O哈哈~ **.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: