将远程的数据库按照本机的数据进行更新,如何进行?????急急急!!!

jackyoung02 2004-11-21 08:57:02
要将远程的数据库进行更新,更新为本机的数据
建立了dnlink,可是执行不成功!!!!!

大家帮忙啊!!!!!
...全文
88 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
comcn 2004-11-21
  • 打赏
  • 举报
回复
呵呵.没注意
不过还是谢谢楼主的结帖速度
jackyoung02 2004-11-21
  • 打赏
  • 举报
回复
不过还是很感谢!!!
jackyoung02 2004-11-21
  • 打赏
  • 举报
回复
那应该是
where a.ID =b.ID and rownum<2
comcn 2004-11-21
  • 打赏
  • 举报
回复
更新所有info@REMOTE_CONNECT 表的ID为info表的ID
jackyoung02 2004-11-21
  • 打赏
  • 举报
回复
我忘了加 v_user_grade_old is null 的条件了
应该是
IF v_user_grade_old <> v_user_grade_new or v_user_grade_old is null THEN
jackyoung02 2004-11-21
  • 打赏
  • 举报
回复
楼上的大侠解释一下更新语句的含义,谢谢!!!!事关重大啊
comcn 2004-11-21
  • 打赏
  • 举报
回复
UPDATE info@REMOTE_CONNECT SET
USER_GRADE_ID =
(select a.USER_GRADE_ID from info a, info@REMOTE_CONNECT b
where a.USER_GRADE_ID =b.USER_GRADE_ID and rownum<2)
jackyoung02 2004-11-21
  • 打赏
  • 举报
回复
大家帮忙啊!!!!!!1
jackyoung02 2004-11-21
  • 打赏
  • 举报
回复
不幸啊,还是不幸的
comcn 2004-11-21
  • 打赏
  • 举报
回复
CREATE OR REPLACE PROCEDURE P_REVERT
AS

v_user_grade_new number(9); --等级(更新)
v_user_grade_old number(9); --等级(原有)
v_id number; --总ID
v_count number; --更新记录数


--查找总ID
cursor cur_id is select id from info@REMOTE_CONNECT;
BEGIN
v_count := 0;
open cur_id;
fetch cur_id into v_id;
while cur_id%found loop
--取出原有数据,插入变量中:
SELECT USER_GRADE_ID
INTO v_user_grade_old
FROM info@REMOTE_CONNECT
WHERE id = v_id;

--取出更新后的数据,插入变量中:
SELECT USER_GRADE_ID
INTO v_user_grade_new
FROM info
WHERE id = v_id;

IF v_user_grade_old <> v_user_grade_new THEN
v_count := v_count + 1;--更新记录数加一
--还原数据
UPDATE info@REMOTE_CONNECT SET
USER_GRADE_ID = v_user_grade_new
WHERE id = v_id;
commit;
END IF;

fetch cur_id into v_id;
end loop;
close cur_id;
dbms_output.put_line('更新的记录数为:' || v_count);

END P_REVERT;
jackyoung02 2004-11-21
  • 打赏
  • 举报
回复
原有数据在REMOTE_CONNECT连接中的表中,新数据在我的本地
jackyoung02 2004-11-21
  • 打赏
  • 举报
回复
没有提示错误信息啊,真是奇怪啊,但是数据就是没有更新。
不能用EXP/IMPd的,远程数据库是在用系统
大家帮忙啊!!!!!!!
jackyoung02 2004-11-21
  • 打赏
  • 举报
回复
错了,建了dblink了,可是存储过程执行不成功。
CREATE OR REPLACE PROCEDURE P_REVERT
AS

v_user_grade_new number(9); --等级(更新)
v_user_grade_old number(9); --等级(原有)
v_id number; --总ID
v_count number; --更新记录数


--查找总ID
cursor cur_id is select id from info@REMOTE_CONNECT;
BEGIN
v_count := 0;
open cur_id;
fetch cur_id into v_id;
while cur_id%found loop
--取出原有数据,插入变量中:
SELECT USER_GRADE_ID
INTO v_user_grade_old
FROM info@REMOTE_CONNECT
WHERE id = v_id;

--取出更新后的数据,插入变量中:
SELECT USER_GRADE_ID
INTO v_user_grade_new
FROM info
WHERE id = v_id;

IF v_user_grade_old <> v_user_grade_new THEN
v_count := v_count + 1;--更新记录数加一
--还原数据
UPDATE info@REMOTE_CONNECT SET
USER_GRADE_ID = v_user_grade_new
WHERE id = v_id;

END IF;

fetch cur_id into v_id;
end loop;
close cur_id;
dbms_output.put_line('更新的记录数为:' || v_count);
commit;
END P_REVERT;
/
comcn 2004-11-21
  • 打赏
  • 举报
回复
为何不用EXP呢
你可以在远程数据库上EXP,再IMP.

要用DBLINK也是可以的,把错误信息给一下吧

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧