有两个表,d_facers,d_faceelement.  这两个表的主外键关系是:d_facers.rsid=d_faceelement.rsid。对于表d_faceelement中的rsid,只要是满足(select d.rsid from d_facers d where d.tablename='p_public_policy';)
就插入一条数据。(插入的字段只有rsid不相同,其他的都相同。)
例如:
insert into d_Faceelement (RSID, ELEMENTID, ELEMENTNAME, SERIALNO, COLSPANCOUNT, ELEMENTTYPE, TBLNAME, TBLFIELDNAME, LKFIELD, SUPERIORFIELD, IFPK, EXPRESSION, CONTROLTYPE, INITSOURCE, INITPARAM, OTHERNAMES, CHECKTYPE, STYLE, IFNULL, IFREADONLY, MAXLENGTH, DEFAULTVALUE, LOWERFIELD, EVENT, OPUNITCODE, OPCODE, OPDATE, IFSUBMIT, GROUPFLAG, APPENDINFO, APPENDELEMENTS, IFHIDEN, IFMAINCLASSES, OTHERCONVEYANCE, TBLFIELDTYPE, TBLFIELDFORMAT, DYNAMICQUERYPANNEL, DECIMALDIGITS)
values ('s140000001', '1019      ', '是否总对总交叉销售渠道', 41, 1, '0', 'p_public_policy', 'isCrossSelling', '', '', '0', '', '3', 'sCodeItem ', 'codeno=001', '', '0', '', '0', '0', 1, '0', '', '', '3010100', 'jia     ', to_date('08-11-2010 10:21:59', 'dd-mm-yyyy hh24:mi:ss'), '1', '1', '', '', '', '', '', '', '', '', null);
这个应该比较简单吧。散分!!!!!!!!!

解决方案 »

  1.   

    insert into d_Faceelement (RSID, ELEMENTID, ELEMENTNAME, SERIALNO, COLSPANCOUNT, ELEMENTTYPE, TBLNAME, 
    TBLFIELDNAME, LKFIELD, SUPERIORFIELD, IFPK, EXPRESSION, CONTROLTYPE, INITSOURCE, INITPARAM, OTHERNAMES,
    CHECKTYPE, STYLE, IFNULL, IFREADONLY, MAXLENGTH, DEFAULTVALUE, LOWERFIELD, EVENT, OPUNITCODE, OPCODE, 
    OPDATE, IFSUBMIT, GROUPFLAG, APPENDINFO, APPENDELEMENTS, IFHIDEN, IFMAINCLASSES, OTHERCONVEYANCE, 
    TBLFIELDTYPE, TBLFIELDFORMAT, DYNAMICQUERYPANNEL, DECIMALDIGITS)
    values ('s140000001', '1019 ', '是否总对总交叉销售渠道', 41, 1, '0', 'p_public_policy', 'isCrossSelling',
     '', '', '0', '', '3', 'sCodeItem ', 'codeno=001', '', '0', '', '0', '0', 1, '0', '', '', '3010100', 
     'jia ', to_date('08-11-2010 10:21:59', 'dd-mm-yyyy hh24:mi:ss'), '1', '1', '', '', '', '', '', '', '', '', null)
     WHERE EXISTS(select d.rsid from d_facers d where d.tablename='p_public_policy') ;
      

  2.   

    insert into d_Faceelement  (RSID, ELEMENTID, ELEMENTNAME, SERIALNO, COLSPANCOUNT, ELEMENTTYPE, TBLNAME, TBLFIELDNAME, LKFIELD, SUPERIORFIELD, IFPK, EXPRESSION, CONTROLTYPE, INITSOURCE, INITPARAM, OTHERNAMES, CHECKTYPE, STYLE, IFNULL, IFREADONLY, MAXLENGTH, DEFAULTVALUE, LOWERFIELD, EVENT, OPUNITCODE, OPCODE, OPDATE, IFSUBMIT, GROUPFLAG, APPENDINFO, APPENDELEMENTS, IFHIDEN, IFMAINCLASSES, OTHERCONVEYANCE, TBLFIELDTYPE, TBLFIELDFORMAT, DYNAMICQUERYPANNEL, DECIMALDIGITS)
    values ('s140000001', '1019 ', '是否总对总交叉销售渠道', 41, 1, '0', 'p_public_policy', 'isCrossSelling', '', '', '0', '', '3', 'sCodeItem ', 'codeno=001', '', '0', '', '0', '0', 1, '0', '', '', '3010100', 'jia ', to_date('08-11-2010 10:21:59', 'dd-mm-yyyy hh24:mi:ss'), '1', '1', '', '', '', '', '', '', '', '', null)
    where exists(select 1 from d_facers d where d.rsid=d_faceelement.rsid and d.tablename='p_public_policy');
      

  3.   

    说明一下,
    select d.rsid from d_facers d where d.tablename='p_public_policy' 返回数据不是一条。在插入的时候d_faceelement.rsid和d_facers.rsid是对应的。
      

  4.   

    两句行吗?
    insert into d_Faceelement(RSID)select rsid from d_facers d where d.tablename='p_public_policy';
    update d_Faceelement set ELEMENTID='1019',ELEMENTNAME='是否总对总交叉销售渠道',--其他的省略 ;
    commit;
      

  5.   

     你自己描述的不清楚啊,你要插入到d_Faceelement到底是什么数据啊?
    是d_facers 这个表的数据吗?
    insert into d_Faceelement 
    (select * from d_facers d where d.tablename='p_public_policy');
      

  6.   


    insert into d_Faceelement(RSID)select rsid from d_facers d where d.tablename='p_public_policy';
    update d_Faceelement set ELEMENTID='1019',ELEMENTNAME='是否总对总交叉销售渠道',……
    commit;
      

  7.   


    --你这个其实没说清楚需求,比如你插入的数据来源等
    --给你写了个procedure 你看看根据你具体逻辑改下:CREATE OR REPLACE PROCEDURE p_insert_d_Faceelement
    IS
      num NUMBER:=0;
    BEGIN 
        BEGIN 
            SELECT Count(1) INTO num FROM d_faceelement f
                    WHERE EXISTS(select 1 from d_facers d where d.tablename='p_public_policy' AND d.rsid=f.rsid) ;
        EXCEPTION WHEN OTHERS THEN
            num:=0;
        END;
        IF num!=0 THEN
           insert into d_Faceelement (RSID, ELEMENTID, ELEMENTNAME, SERIALNO, COLSPANCOUNT, ELEMENTTYPE, TBLNAME, 
                                      TBLFIELDNAME, LKFIELD, SUPERIORFIELD, IFPK, EXPRESSION, CONTROLTYPE, INITSOURCE, 
                                      INITPARAM, OTHERNAMES,CHECKTYPE, STYLE, IFNULL, IFREADONLY, MAXLENGTH, DEFAULTVALUE, 
                                      LOWERFIELD, EVENT, OPUNITCODE, OPCODE,OPDATE, IFSUBMIT, GROUPFLAG, APPENDINFO, 
                                      APPENDELEMENTS, IFHIDEN, IFMAINCLASSES, OTHERCONVEYANCE,TBLFIELDTYPE, TBLFIELDFORMAT, 
                                      DYNAMICQUERYPANNEL, DECIMALDIGITS)
           SELECT ..... FROM .....;  --插入的值,来自你的逻辑或者其他表
        END IF;
        COMMIT;END;
      

  8.   

    insert into d_Faceelement (RSID, ELEMENTID, ELEMENTNAME, SERIALNO, COLSPANCOUNT, ELEMENTTYPE, TBLNAME, TBLFIELDNAME, LKFIELD, SUPERIORFIELD, IFPK, EXPRESSION, CONTROLTYPE, INITSOURCE, INITPARAM, OTHERNAMES, CHECKTYPE, STYLE, IFNULL, IFREADONLY, MAXLENGTH, DEFAULTVALUE, LOWERFIELD, EVENT, OPUNITCODE, OPCODE, OPDATE, IFSUBMIT, GROUPFLAG, APPENDINFO, APPENDELEMENTS, IFHIDEN, IFMAINCLASSES, OTHERCONVEYANCE, TBLFIELDTYPE, TBLFIELDFORMAT, DYNAMICQUERYPANNEL, DECIMALDIGITS)
    SELECT RSID,'s140000001', '1019 ', '是否总对总交叉销售渠道', 41, 1, '0', 'p_public_policy', 'isCrossSelling', '', '', '0', '', '3', 'sCodeItem ', 'codeno=001', '', '0', '', '0', '0', 1, '0', '', '', '3010100', 'jia ', to_date('08-11-2010 10:21:59', 'dd-mm-yyyy hh24:mi:ss'), '1', '1', '', '', '', '', '', '', '', '', null from d_facers d 
    where d.tablename='p_public_policy'; 我的新方法
      

  9.   

    哎,还是不可行。看来只能用存储过程。 
    用8楼的了。先插rsid
    然后update;
    感谢大家!!!!!!!!!