将集合数据和 fk 插入表 oracle apex

问题描述

所以基本问题是: 如何将另一个表中的主键作为外键检索到另一个表中,同时将集合中存储的输入插入到表中?

通过这个过程,我可以从表中获取主键并将其作为外键插入到另一个表中:

DECLARE
  l_id table1.id%TYPE;
BEGIN
  INSERT INTO table1(val) VALUES ('Europe')
    RETURNING id INTO l_id;
  INSERT INTO table2(continent_id,val) VALUES (l_id,'Belgium');
END;
/

通过这个过程,我可以将集合中存储的信息插入到相应的表中。

begin
for i IN (SELECT c001 AS a,c002 AS b,c003 AS c,c004 AS d
          from APEX_COLLECTIONS
  WHERE COLLECTION_NAME='ITEM_DATA'
  ORDER BY 1)
 loop
    insert into table1 (USERID,TEST1,TEST2,TEST3)
    values ( i.a,i.b,i.c,i.d);
  end loop;
apex_collection.delete_collection(p_collection_name=>'ITEM_DATA');
end;

但是,我想开发一个过程,其中外键和集合中存储的信息同时输入到表中。

INSERT INTO TABLE1(FKID,USERID,PROGRAMID,COURSEID) VALUES (ID_SEQ.NEXTVAL,(select c001,c002,c003 from APEX_COLLECTIONS WHERE COLLECTION_NAME='SAVED_DATA'))

很遗憾,我无法在 insert into values 语句中插入 select 语句。

解决方法

如果我没有理解错,这就是你想要的吗?

INSERT INTO TABLE1 (FKID,USERID,PROGRAMID,COURSEID) 
 SELECT ID_SEQ.NEXTVAL,c001,c002,c003 
 FROM APEX_COLLECTIONS 
 WHERE COLLECTION_NAME='SAVED_DATA';