oralce存储过程实现不同用户之间的表数据复制
create or replace procedure prc_test123 is
temp_columns varchar2(4000);
sqltemp varchar(20000);
cursor cur is select table_name from user_tables a where a.table_name like 'ZY%';
c_row cur%rowtype;
cursor t_cur(tablename varchar2) is select column_name from user_tab_columns a where a.table_name=tablename order BY column_name;
--type table_cur_type is ref cursor;
primaryLKey varchar2(20);
begin
for c_row in cur loop
temp_columns:='';
for t_c_row in t_cur(c_row.table_name) loop
if temp_columns is null or temp_columns='' then
dbms_output.put_line(temp_columns);
temp_columns:=t_c_row.column_name;
else
temp_columns:=temp_columns||','||t_c_row.column_name;
end if;
end loop;
--取出主键
select column_name into primaryLKey from user_cons_columns cu,
user_constraints au where cu.constraint_name = au.constraint_name and au.constraint_type = 'P' and au.table_name =c_row.table_name;
--插入没有的主键数据
sqltemp:='insert into '||c_row.table_name ||' a ('||temp_columns||') SELECT '||temp_columns||' from data_manage.'||c_row.table_name ||' b where not exists(select 1 from '||c_row.table_name ||' c where c.'||primaryLKey||'=b.'||primaryLKey||')';
execute immediate sqltemp;
--更新已有的主键数据
sqltemp:='update '||c_row.table_name ||' a set ('||temp_columns||') = (SELECT '||temp_columns||' from data_manage.'||c_row.table_name ||' b where b.'||primaryLKey||'=a.'||primaryLKey||') where exists(select 1 from data_manage.'||c_row.table_name||' y where a.'||primaryLKey||'=y.'||primaryLKey||')';
execute immediate sqltemp;
end loop;
end;
对于不同用户下同一张表的数据进行复制,已有数据进行更新,没有的数据进行插入
oralce存储过程实现不同用户之间的表数据复制的更多相关文章
- sql的存储过程实例--动态根据表数据复制一个表的数据到另一个表
动态根据表数据复制一个表的数据到另一个表 把track表的记录 根据mac_id后两位数字,复制到对应track_? 的表中 如:mac_id=12345678910,则后两位10 对应表为track ...
- oracle存储过程删除树状结构的表数据
今天在删除一个车辆品牌表的时候,遇到了一个问题,是在java的代码中做逻辑删除还是直接在Oracle中一次删除完成呢 思来想去觉得还是在sql里直接删除比较合适, 为什么呢? 第一,涉及数据库的读写操 ...
- 【转】sqlserver数据库之间的表的复制
以下以数据库t1和test为例. 1.复制表结构及资料 select * into 数据库名.dbo.表名 from 源表(全部数据) 如:select * into t1.dbo.YS1 ...
- mysql复制表数据,多表数据复制到一张表
对于mysql 复制表数据可以使用 insert into select 方式 示例: $sql="insert into icarzoo.provider(providerId,provi ...
- sqlserver 两 表 数据 复制 (附加 跨服务器 查询的方法)
一 : 这个sql 语句 可以快速的 将 一 个旧表 中的指定字段的数据 复制到 另一个新表的指定字段中 insert into dbo.Customer ( CustomerId , Custome ...
- oracle同一个数据库实例不同的用户之间的表、序列授权操作
1.背景:用户jtuser中有jtproduct中表A,B的同义词,在用户jtuser中向表A,B插入数据,提示“权限不够” 2.将A,B表授权给jtuser用户 $ sqlplus / as sys ...
- oracle用户间表数据复制迁移
如system用户要将scott中的emp表倒入其中,按如下方法: 1.登录scott用户 2.给system用户赋予查询emp标的权限: grant select on emp to system; ...
- 将远程数据库中的某表数据复制到本数据库(ORACLE)
1. 建立 DATABASE LINKCREATE PUBLIC DATABASE LINK ABCCONNECT TO SA IDENTIFIED BY PASSWORDUSING '(DESCRI ...
- oracle复制表数据,复制表结构
1.不同用户之间的表数据复制 2.同用户表之间的数据复制 3.B.x中个别字段转移到B.y的相同字段 4.只复制表结构 加入了一个永远不可能成立的条件1=2,则此时表示的是只复制表结构,但是不复制表内 ...
随机推荐
- Java 分布式事务
0 引言 本文主要介绍java中分布式事务以及对应的解决方案. 1 分布式事务产生的原因 1.1 数据库分库分表 当数据库单表一年产生的数据超过1000W,那么就要考虑分库分表,具体分库分表的原理在此 ...
- Python笔记7----Pandas中变长字典Series
1.Series概念 类似一维数组的对象,由数据和索引组成 2.Series创建 用Series()函数创建,0,1,2为series结构自带的索引. 可以自己指定索引值,用index,也可以直接用字 ...
- Win32 编程消息常量(C#)
public class WinMessages { #region 基本消息 public const int WM_NULL = 0x0000; public const int WM_CREAT ...
- Tensorflow读取文件到队列文件
TensorFlow读取二进制文件数据到队列 2016-11-03 09:30:00 0个评论 来源:diligent_321的博客 收藏 我要投稿 TensorFlow是一种 ...
- springmvc上传操作
创建虚拟目录 配置tomcat的配置文件server.xml 在真实路径中放置一个图片 启动服务器: 直接可以通过配置的虚拟路径来访问真实路径中的图片 所以 我们在做图片上传的操作的时候 就可 ...
- flash透明 处于最低
怎样在html中让flash透明 前提是FLASH里没有用其它形状或图形来作为背景.方法主要是在网页中的Flash加入一个参数,让网页设定Flash文件背景透明,Flash文件本身做不到. 关键: & ...
- ie6下position:fixed定位问题
1. *html{ background-image:url(about:blank); background-attachment:fixed;}2.将需要用固定定位的元素中加上_position: ...
- bzoj 3236: [Ahoi2013]作业(缺线段树)
3236: [Ahoi2013]作业 Time Limit: 100 Sec Memory Limit: 512 MBSubmit: 1744 Solved: 702[Submit][Status ...
- Cocos2d-x碰撞检測
假设不适用Box2D物理引擎.那么要进行Cocos2d-x的碰撞检測那我们的方法往往就是进行"矩形和点"."矩形和矩形"这样粗略的碰撞检測.我们一般採取开启sc ...
- Log4J日志配置具体解释
一.Log4j简单介绍 Log4j有三个基本的组件:Loggers(记录器),Appenders (输出源)和Layouts(布局).这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出.综 ...