现在有两个用户A和B,用户A下的表是用户B下表的子集,现在每天需要执行的操作是:将B用户表中符合一定查询条件的数据插入A用户的表中,A用户下表的个数并不固定,以后可能增加或删除,但总是符合是B用户下表的子集。我的思路是:
遍历A用户下的所有表,并从通过dblink从B用户下同名的表中获取数据插入,求教这个过程该怎么写?Oracle遍历
遍历A用户下的所有表,并从通过dblink从B用户下同名的表中获取数据插入,求教这个过程该怎么写?Oracle遍历
解决方案 »
- oracle9i如何将一列变成字符串
- 如何创建多个数据库
- 多表连接查询的一个问题
- 怎么样从oracle中读出我所在的数据库的名称?
- 小弟要对容量估算,请问每个date、 number(2)分别占多少字节??
- 如何把win2000服务里的多余的listner删掉?
- 大虾救命!如何解决ORA-01401: inserted value too large for column
- 请问各位大哥.如何用ASP连接.oracle数据库,代码怎么写
- oracle中的序列怎么让它重新从1开始记??
- ===!!分布够再加!问如何在数据中输入单引号,并问如何输入各种特殊符号!
- 紧急求救,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;好吧,大致代码我是这么写的结贴送分