为何不用EXP呢
你可以在远程数据库上EXP,再IMP.要用DBLINK也是可以的,把错误信息给一下吧

解决方案 »

  1.   

    错了,建了dblink了,可是存储过程执行不成功。
    CREATE OR REPLACE PROCEDURE P_REVERT
    ASv_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;
    /
      

  2.   

    没有提示错误信息啊,真是奇怪啊,但是数据就是没有更新。
    不能用EXP/IMPd的,远程数据库是在用系统
    大家帮忙啊!!!!!!!
      

  3.   

    原有数据在REMOTE_CONNECT连接中的表中,新数据在我的本地
      

  4.   

    CREATE OR REPLACE PROCEDURE P_REVERT
    ASv_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;
      

  5.   

    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)
      

  6.   

    我忘了加  v_user_grade_old  is null 的条件了
    应该是
    IF v_user_grade_old <> v_user_grade_new  or v_user_grade_old  is null  THEN
      

  7.   

    更新所有info@REMOTE_CONNECT 表的ID为info表的ID
      

  8.   

    那应该是
     where a.ID =b.ID and rownum<2