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

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

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

  1. 使用 游标 实现自动从 test1 将电话号码 插入 test2 表。
  2. 叼哥 肯定会说,这跟游标有个 吊毛 关系,非也,我们如果想批量 从test1 表中,将数据批量插入test2 中,必然会使用到游标。
  3. 首先肯定我们先要知道,什么是游标,游标有什么作用,开始lz 也是个屌丝,压根不知道这是搞毛用的,为此还被之前我们组的 大佬 冷嘲热讽 了一番。
  4. 其实说白了,也没什么大不了的,听起来高大上的东西, 就类似 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.


  1. ———–笑皮脸 O(∩_∩)O哈哈~ **.
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值