现在有两个用户A和B,用户A下的表是用户B下表的子集,现在每天需要执行的操作是:将B用户表中符合一定查询条件的数据插入A用户的表中,A用户下表的个数并不固定,以后可能增加或删除,但总是符合是B用户下表的子集。我的思路是:
遍历A用户下的所有表,并从通过dblink从B用户下同名的表中获取数据插入,求教这个过程该怎么写?Oracle遍历
遍历A用户下的所有表,并从通过dblink从B用户下同名的表中获取数据插入,求教这个过程该怎么写?Oracle遍历
解决方案 »
- 不会再问我
- 怎么取得数据库中两个表中相同字段的合集
- 不能把超过 4000 字节数据绑定到语句 1 中的 LOB 和 LONG
- 关于oracle索引的问题,谁答上有重赏!!!!!!!!!!
- 请高手解答
- OracleOraDb10g_home1TNSListener服務啟動不了?急急急
- 疯狂散分,求2个函数。
- ***ORA—12541:TNS:没有监听器???***
- Oracle游标的性能优化
- 请教各位在VMware中创建共享磁盘的问题:scsi1:0.deviceType = “disk”这个配置项的作用是什么?
- 紧急求救,ORA-01157: cannot identify/lock data file 7 - see DBWR trace file
- 不能为虚拟电脑rac2打开一个新任务
dba_tables,dba_tab_columns,以及动态语句可以解决。剩下的就是简单的循环控制逻辑。
类似作用的视图也可以完成这些功能。
CREATE OR REPLACE PACKAGE PKG_temp is
TYPE T_CURSOR IS REF CURSOR;
procedure pro_get_all(CUR_OUT OUT T_CURSOR);
END PKG_temp;
CREATE OR REPLACE PACKAGE BODY PKG_temp
is
procedure pro_get_all(CUR_OUT OUT T_CURSOR) is
v_col_list varchar2(500):='';
v_tab_str varchar2(500):='';
begin
FOR tb IN (SELECT table_name FROM user_tables) LOOP
v_tab_str:=tb.table_name||','||v_tab_str;
v_col_list:='';
FOR col IN (select column_name from user_tab_cols where table_name =tb.table_name ) LOOP
v_col_list:=col.column_name||','||v_col_list;
END LOOP;
/*dbms_output.put_line(v_col_list);*/
execute immediate 'insert into '||tb.table_name||'@dblink_sjl select * from '|| tb.table_name;
commit;
open CUR_OUT for 'select 1 from dual';
END LOOP;
end;
END PKG_temp;好吧,大致代码我是这么写的结贴送分