我的需要是:以前我从变量导如入的数据我在下次导入时就不导入!用NOT IN
排除了导入的数据!
实现增量导入!!
我现在是从SQL SERVER 把数据导入到ORACLE下用的方式是通过变量传递实现的!但是当我在导入数据的时候物理的网络断线!只有部份数据导入!当
网络连通时我要导入盛下的数据,我在SQL SERVER下实验了一下就是按上面的
语句是可以的但是在ORACLE下不行!我请教应该怎么写!
谢谢大家!急!

解决方案 »

  1.   

    你的语句的结果就是如果'tom'在test中存在就不插入,但是如果不存在就插入一条新纪录,是吗?
    这个很容易,但是你能解决什么问题?你难道从sql server中一行一行地循环判断?那效率太低了。
    比较简单的办法是把数据倒入到oracle一个临时表中(比如叫做temp),目标表为mytable,然后用一句sql就完成了:
    insert into mytable
    select * from temp x
     where not exists (select 'x' from mytable
                        where id=x.id  --id指主键,可能有多个字段
                      );
      

  2.   

    可以!!!!!
    declare @temp char(10)
    select @temp='tom'
    insert into test(name) select @temp where @temp not in (select name from test)
    运行通过!
    解释:TOM是我要插入的字段!但是用变量插入!
    在插入前我要进行判断,是否从前已经插入过!如果有就不能插入(not in)
    在ORACLE下不能通过select需要from!而我不是从表插入而是通过变量!
    请问在ORACLE怎么写!要实现上面的程序!谢谢大家!
      

  3.   

    declare 
    temp char(10);
    begin
    temp:='tom';
    insert into test(name) values(temp) where temp not in (select name from test);
    end;================================================================
    ★★ chen_cyh(を愛た) ●  
      

  4.   

    你的表有多大?这么导速度很慢!!!你的'tom'时字段的值吧,不是子短名吧?
    ================================================================
    ★★ chen_cyh(を愛た) ●