declare 
    cursor cur_op is 
    select b.organ_id as organ_id, a.organ_name as organ_name,name,user_name from jz_user_create a, db_designer.dic_organ@mz_jiuzhu.world b
           where a.organ_name = b.organ_name
                 and a.if_op = '1'
                 order by a.organ_name;for rec in cur_ch loop    
      if(A中是否存在数据A)then
          insert ;
      else  
          update; 
      end if;     
      commit;
 end loop   ;不知道这个if 的判断该怎么写了,对语法不是很熟悉。
本来想写if exists(select 'x' from A where x=a).但是想想这样写好像是不行的吧
大家给帮帮忙。看看怎么写判断
菜鸟在这谢谢大家了

解决方案 »

  1.   

    select COUNT(*) from A where x=a
    一般判断用COUNT进行,存在的话>0
      

  2.   

    可以分两步写嘛
    定义 一个变量  把select 的值into 到变量中
    再判断变量 >0 就成
      

  3.   

    oracle什么版本?9i 以上有 MERGE 命令。自己可以看参考,
    ps:就为了这么简单的一个功能写个存储过程,费解费解
      

  4.   

    for rec in cur_ch loop
           if(rec.organ_name='A' and rec.organ_id=4)then
               insert ;
           else
               update;
           end if;
           commit;
      end loop   ;不过不清楚你的业务。
      

  5.   

    cur_op%rowcount<=0。这样可以??
      

  6.   

    不需要PL/SQL,只需要一个SQL语句即可,如下:
    MERGE INTO A m
    USING (SELECT b.organ_id AS organ_id, a.organ_name AS organ_name, NAME, user_name
             FROM jz_user_create a, db_designer.dic_organ@mz_jiuzhu.world b
            WHERE a.organ_name = b.organ_name AND
                  a.if_op = '1'
            ORDER BY a.organ_name) n
    ON (m.organ_id = n.organ_id)
    WHEN MATCHED THEN
      UPDATE SET m.organ_name = n.organ_name, m.user_name = n.user_name
    WHEN NOT MATCHED THEN
      INSERT VALUES (n.organ_id, n.organ_name, n.user_name)
      

  7.   

    可以用select count(1) into v_num ...或者用NO_DATA_FOUND 和 %NOTFOUND