Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql Oracle的插入循环_Sql_Oracle_Loops_Sql Insert - Fatal编程技术网

Sql Oracle的插入循环

Sql Oracle的插入循环,sql,oracle,loops,sql-insert,Sql,Oracle,Loops,Sql Insert,我需要一个mi问题的解决方案。它不一定是一个循环,我感谢每一个输入 我有一个表,里面有262个条目。我们称之为EXPTB1。 我还有第二张表,是emtpy 现在对于EXPTB1中的每个条目,我需要EXPTB2中的6个条目。必须填写三个属性。一个是主键,由序列自动生成。一个是EXPTB1条目的外键,另一个包含6个条目中每个条目的6个不同数字(位置)。数字总是1,2,3,11,12,13 因此,我们查看EXPTB1的单个条目,我需要为以下查询中的每个ist对象创建一个条目: insert into

我需要一个mi问题的解决方案。它不一定是一个循环,我感谢每一个输入

我有一个表,里面有262个条目。我们称之为EXPTB1。 我还有第二张表,是emtpy

现在对于EXPTB1中的每个条目,我需要EXPTB2中的6个条目。必须填写三个属性。一个是主键,由序列自动生成。一个是EXPTB1条目的外键,另一个包含6个条目中每个条目的6个不同数字(位置)。数字总是1,2,3,11,12,13

因此,我们查看EXPTB1的单个条目,我需要为以下查询中的每个ist对象创建一个条目:

insert into EXPTB2(EXPTB2_ID,EXPTB2_EXPTB1_ID,EXPTB2_POSITION) values (EXPTB2_SEQ.nextval,EXPTB1_ID,1);
insert into EXPTB2(EXPTB2_ID,EXPTB2_EXPTB1_ID,EXPTB2_POSITION) values (EXPTB2_SEQ.nextval,EXPTB1_ID,2);
insert into EXPTB2(EXPTB2_ID,EXPTB2_EXPTB1_ID,EXPTB2_POSITION) values (EXPTB2_SEQ.nextval,EXPTB1_ID,3);
insert into EXPTB2(EXPTB2_ID,EXPTB2_EXPTB1_ID,EXPTB2_POSITION) values (EXPTB2_SEQ.nextval,EXPTB1_ID,11);
insert into EXPTB2(EXPTB2_ID,EXPTB2_EXPTB1_ID,EXPTB2_POSITION) values (EXPTB2_SEQ.nextval,EXPTB1_ID,12);
insert into EXPTB2(EXPTB2_ID,EXPTB2_EXPTB1_ID,EXPTB2_POSITION) values (EXPTB2_SEQ.nextval,EXPTB1_ID,13);

  • 行数
  • 主键-由序列创建
  • EXPTB1中某个条目的外键
  • 位置
  • 我希望我的描述足够清楚,这有点难以描述:)

    干杯 费边

    试试这个:

    insert into EXPTB2 (EXPTB2_ID,EXPTB2_EXPTB1_ID,EXPTB2_POSITION)
    with positions (pos) as
    ( select 1 from dual union all
      select 2 from dual union all
      select 3 from dual union all
      select 11 from dual union all
      select 12 from dual union all
      select 13 from dual )
    select EXPTB2_SEQ.nextval, EXPTB1_ID, positions.pos
    from   EXPTB1
           cross join positions;
    
    with
    子句创建一个虚拟表位置,其中有6行包含所需的值。然后与源表交叉连接,为每个源表行生成6个新行。

    尝试以下操作:

    insert into EXPTB2 (EXPTB2_ID,EXPTB2_EXPTB1_ID,EXPTB2_POSITION)
    with positions (pos) as
    ( select 1 from dual union all
      select 2 from dual union all
      select 3 from dual union all
      select 11 from dual union all
      select 12 from dual union all
      select 13 from dual )
    select EXPTB2_SEQ.nextval, EXPTB1_ID, positions.pos
    from   EXPTB1
           cross join positions;
    

    with
    子句创建一个虚拟表位置,其中有6行包含所需的值。然后与源表交叉连接,为每个源表行生成6个新行。

    您可以使用包含以下值的表集合表达式进行交叉连接:

    INSERT INTO EXPTB2( EXPTB2_ID,EXPTB2_EXPTB1_ID,EXPTB2_POSITION )
    SELECT EXPTB2_SEQ.nextval,
           EXPTB1_ID,
           t.COLUMN_VALUE
    FROM   EXPTB1
           CROSS JOIN
           TABLE( SYS.ODCINUMBERLIST( 1, 2, 3, 11, 12, 13 ) ) t;
    

    您可以使用包含以下值的表集合表达式进行交叉联接:

    INSERT INTO EXPTB2( EXPTB2_ID,EXPTB2_EXPTB1_ID,EXPTB2_POSITION )
    SELECT EXPTB2_SEQ.nextval,
           EXPTB1_ID,
           t.COLUMN_VALUE
    FROM   EXPTB1
           CROSS JOIN
           TABLE( SYS.ODCINUMBERLIST( 1, 2, 3, 11, 12, 13 ) ) t;
    

    很好用。谢谢!很好用。谢谢!很好用。谢谢!工作得很好。谢谢!