是这意思么?insert into B (hincd,col1,col2...)
   select hincd,col1,col2... 
from A where hincd not in(select distinct hincd from B)

解决方案 »

  1.   

    是把insert语句放在一个function中,先判断A中记录是否在B中存在,不存在则进行插入操作
      

  2.   

    CREATE OR REPLACE FUNCTION  initialize
    (
      sp_skssb in number ,
      sp_sksssy in varchar2
    )return number as
    --initday   number(8) := to_number(to_char(sysdate, 'yyyymmdd'));
    begin     if exists(select * from hin_mst where hincd not in(select hincd from k_hin_mst)) then
           begin
               insert into k_hin_mst(hincd,skssb,sksssy)
               select hincd,sp_skssb,sp_sksssy
               from hin_mst
               where hincd not in(select hincd from k_hin_mst);       end;
         end if   end;
    这样却不行,不知道怎么改了,大家帮帮忙
      

  3.   

    CREATE OR REPLACE FUNCTION  initialize
    (
      sp_skssb in number ,
      sp_sksssy in varchar2
    )return number as
    v_num number;
    begin
    select count(*) into v_num from hin_mst where hincd not in(select hincd from k_hin_mst);
         if v_num>0 then
           begin
               insert into k_hin_mst(hincd,skssb,sksssy)
               select hincd,sp_skssb,sp_sksssy
               from hin_mst
               where hincd not in(select hincd from k_hin_mst);       end;
         end if   end;
      

  4.   

    bzszp(SongZip),还有其他什么方法吗?count(*)感觉效率不是很高
      

  5.   

    这个能好一点
    select count(*) into v_num 
    from hin_mst where hincd not exitsts(select 1 from k_hin_mst where k_hin_mst.hincd=hin_mst.hincd);没有其他的办法了
      

  6.   

    Merge Into b
            Using a
            On (b.hincd= a.hincd)
            When Matched Then
            ...
            When Not Matched Then
            Insert
            (b.column....)
            Values
            (a.column....)