oracle 之 数组、嵌套表、SQL查询式 实现多表数据for循环插入指定表
1、基础环境
创建基础表:
CREATE TABLE TEST_TAB1(
ID INT,
NAME VARCHAR2(20)
);
CREATE TABLE TEST_TAB2(
ID INT,
NAME VARCHAR2(20)
);
CREATE TABLE TEST_TAB3(
ID INT,
NAME VARCHAR2(20)
);
CREATE TABLE TEST_IN_TAB(
ID INT,
NAME VARCHAR2(20)
);
插入基础数据:
INSERT INTO TEST_TAB1 VALUES(1,'TEST1');
INSERT INTO TEST_TAB1 VALUES(2,'TEST1');
INSERT INTO TEST_TAB1 VALUES(3,'TEST1'); INSERT INTO TEST_TAB2 VALUES(1,'TEST2');
INSERT INTO TEST_TAB2 VALUES(2,'TEST2');
INSERT INTO TEST_TAB2 VALUES(3,'TEST2'); INSERT INTO TEST_TAB3 VALUES(1,'TEST3');
INSERT INTO TEST_TAB3 VALUES(2,'TEST3');
INSERT INTO TEST_TAB3 VALUES(3,'TEST3'); commit;
2、SELECT 方式
注:
1、使用 t.TABLE_NAME 作为查询表;
2、EXECUTE IMMEDIATE 不会自动提交DML事务,需要显式提交(commit)。
declare
in_sql VARCHAR2(2000);
begin
for t in (SELECT TABLE_NAME FROM ALL_TABLES WHERE TABLE_NAME LIKE 'TEST_TAB%')
loop
in_sql := 'INSERT INTO TEST_IN_TAB
SELECT ID,NAME
FROM '||t.TABLE_NAME ||' WHERE ID>=2';
EXECUTE IMMEDIATE in_sql;
commit;
end loop;
end;
3、嵌套表(TABLE)
注:下标从1开始,元素个数无限制
declare
type tab is table of varchar2(20);
tab_test tab;
in_sql VARCHAR2(2000);
begin
tab_test:=tab('TEST_TAB1','TEST_TAB2','TEST_TAB3');
for i in 1..tab_test.count
loop
in_sql := 'INSERT INTO TEST_IN_TAB
SELECT ID,NAME
FROM '||tab_test(i) ||' WHERE ID>=2';
EXECUTE IMMEDIATE in_sql;
commit;
end loop;
end;
4、变长数组(ARRAY)
注:下标从1开始,元素个数有限制
declare
type arr_tab is varray(10) of varchar2(20); -- varray(3) 指定最多10个元素
tab_test arr_tab;
in_sql VARCHAR2(2000);
begin
tab_test:=arr_tab('TEST_TAB1','TEST_TAB2','TEST_TAB3');
for i in 1..tab_test.count
loop
in_sql := 'INSERT INTO TEST_IN_TAB
SELECT ID,NAME
FROM '||tab_test(i) ||' WHERE ID>=2';
EXECUTE IMMEDIATE in_sql;
commit;
end loop;
end;
oracle 之 数组、嵌套表、SQL查询式 实现多表数据for循环插入指定表的更多相关文章
- sql 查询 一张表里面的数据 在另一张表中是否存在 和 比对两个集合中的差集和交集(原创)
这两天在搞一个修复的小功能 需求: A表,B表,C表,日志文件 先筛选出A表和B表中都符合条件的数据,然后检查这些数据在C表中是否存在.如果不存在,就从日志中读取数据,存入C表中,如果存在,则不做操作 ...
- 【oracle使用笔记3】sql查询遇到的若干问题总结
在整个开发过程中,sql查询操作的频率比较高,在不同的业务场景下会出现不同的查询需求,以下是我在项目中遇到的查询需求,总结一下. [查询一]:取查询出的第一条数据 select * from (sel ...
- sql 查询某个条件多条数据中最新的一条数据或最老的一条数据
sql 查询某个条件下多条数据中最新的一条数据或最老的一条数据 test_user表结构如下: 需求:查询李四.王五.李二创建的最初时间或者最新时间 1:查询最初的创建时间: SELECT * FRO ...
- sql查询某段时间内的数据
查询半小时内数据的方法 1.select * from 表名 where datediff(minute,createtime,getdate())<30 2.select * from 表名 ...
- SQL中如何将一个表中的某一列的数据复制到另一个表中的某一列里
表一: SPRD PRD_NO SPC 001 NULL 002 NULL 003 NULL ... ...
- ORACLE CPU过高的sql查询
1. 根据占用CPU高的进程号来查询这个进程执行的SQL语句: CPU过高的进程号: #首先找到CPU过高的进程号 # top -bn1 是静态找到占用最高的进程 [root@localhost ...
- oracle学习篇三:SQL查询
select * from emp; --1.找出部门30的员工select * from emp where deptno = 30; --2.列出所有办事员(CLERK)的姓名,变化和部门编号se ...
- sql查询一列 重复的数据
select * from 表 where num in(select num from 表 group by num having count(num)>1)
- PL/SQL 查询结果集直接修改数据
使用t.rowid,查询可以直接在查询结果中修改提交 SELECT t.rowid,t.* from UC_ROLE t where ROLE_NAME like '% %'
随机推荐
- 【Linux】【Services】【SaaS】Docker+kubernetes(2. 配置NTP服务chrony)
1. 简介 1.1. 这次使用另外一个轻量级的NTP服务,chrony.这是openstack推荐使用的ntp服务. 1.2. 官方网站:https://chrony.tuxfamily.org/ 2 ...
- 【C/C++】贪心/算法笔记4.4/PAT B1020月饼/PAT B1023组内最小数
简单贪心 所谓简单贪心,就是每步都取最优的一种方法. 月饼问题:有N种月饼,市场最大需求量D,给出每种月饼的库存量和总售价. 思路:从贵的往便宜的卖.如果当前的已经卖完了,就卖下一个.如果剩余D不足, ...
- JS如何区分微信浏览器、QQ浏览器和QQ内置浏览器,解决 ios 无法判断是否为qq浏览器环境的问题 !!!
原理 通过不同移动端的ua弹窗 获取user-agent 参数包含的信息,进行判断浏览器类型 在Android上 QQ内置环境的ua中有关键字 MQQBrowser, 并且后面包含一个[空白符+QQ] ...
- 批处理文件(.bat)并行Arcpy脚本提高效率的思路
Arcpy提供数据处理的方便接口,但一个Arcpy脚本通常只运行于一个核上.现在电脑通常是多核乃至多处理器,如果能将任务分解为可同时进行的若干任务,便可通过并行充分利用电脑性能. 折腾了python并 ...
- CF140D New Year Contest 题解
Content 小 G 想打一场跨年比赛,比赛从下午 \(18:00\) 开始一直持续到次日清晨 \(6:00\),一共有 \(n\) 道题目.小 G 在比赛开始之前需要花费 10 分钟考虑这些题目的 ...
- 在myeclipse里加大tomcat内存,jdk内存方法
这是在myeclipse里加大的方法: -Xms4096m -Xmx4096m -XX:MaxNewSize=4096m -XX:MaxPermSize=4096m 如图所示: -XX:PermSiz ...
- Linux(centos7)安装redis并设置redis开机自启动
1.下载redis安装包 wget http://download.redis.io/releases/redis-4.0.6.tar.gz 2.解压安装包 tar -zxvf redis-4.0.6 ...
- JAVA加解密之DES
DES加密算法是一种分组密码,以64位为分组对数据加密,它的密钥长度是56位,加密解密用同一算法.DES加密算法是对密钥进行保密,而公开算法,包括加密和解密算法.这样,只有掌握了和发送方相同密钥的人才 ...
- HDZ城市行深圳站|AIoT时代,如何抓住智联生活的战略机会点?
摘要:2021年12月24日,HDZ城市行深圳站:AIoT引爆全场景应用新机会(智联生活专场)圆满落幕. 2021年12月24日,HDZ城市行深圳站:AIoT引爆全场景应用新机会(智联生活专场)圆满落 ...
- 【LeetCode】136. Single Number 解题报告(Java & Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 异或 字典 日期 [LeetCode] 题目地址:h ...