每一次只能插入一条记录值,那现在这样查询一次有多值,一定会报错。用过程可以实现:
declare
cursor tab2_sor is 
select fieldx from table2 where...;
begin
for v_sor in tab2_sor loop
insert into table( Pk_id,field1,field2,field3)
values (seq_Pk_id.Nextval,v_sor.fieldx,....);
end loop;
end;
/
由于以下没能确定值,具体到语句上:
field2 in (sql.....),
field3 in (sql.....))

解决方案 »

  1.   

    利用子查询
    insert into table( Pk_id,field1,field2,field3)
    ( SELECT seq_Pk_id.Nextval, fieldx from table2 where...)
    其他的SQL也可以这样加进来,不过这些SQL产生的值间应该有一一对应关系
      

  2.   

    能不能把sql语句写详细点.我按照上边的指点写了些sql,没有成功.
    不知怎么写完那些语句.? 请写几个能运行的例子好吗?
      

  3.   

    把你的sql语名贴出来,看是否涉及多表问题
      

  4.   

    没有多表的问题.,我就一个表.insert into table( Pk_id,field1,field2,field3)
    ( SELECT seq_Pk_id.Nextval, fieldx from table2 where...)
    想用这框架句来做的,但不懂后边的怎么做.
      

  5.   

    table1结构  ( id, name1 ,name2_fkid ,name3_fkid) 
    table2结构  (id, name1,name2,name3 );
    table3结构  (id,name3);id 做了个seq序号的,其中name2 ,name3是外键,需要根据这两个的值来插入新的id,和name1记录.
      

  6.   

    insert into table1( Pk_id,field1,field2,field3) (select seq_Pk_id.Nextval,name1,name2,name3 from table2 where...)
      

  7.   

    是不是这样:
    insert into table1(id, name1, name2_fkid, name3_fkid)
    ( select seq_Pk_id.Nextval, table2.name1, table2.id, table3.id
      from table2, table3
      where table2.name3 = table3.name3 )