SQL使用序列插入不同的数据

时间:2015-01-12 21:30:12

标签: sql oracle

以下是查询:

    for i in ids.FIRST .. ids.LAST loop
    insert into myTable
        (objid, id, name )

    (select
        values.nextval, ids(i), table2.name

    from  table2

    where table2.id = ids(i) 
    );
   end loop;  

我想使用不同的on ID,因为它们具有冗余值,但是不能直接使用带序列的distinct。我知道我可以在from子句中包装子查询但是没有错误就无法做同样的事情:/

1 个答案:

答案 0 :(得分:0)

那么,你可以这样做 -

FOR rec IN (SELECT DISTINCT column_value
              FROM TABLE(CAST(ids As *Type name*))
LOOP
    INSERT INTO myTable (objid, id, name )
    SELECT values.nextval, rec.column_value, table2.name
      FROM table2
     WHERE table2.id = rec.column_value;
END LOOP;

COLUMN_VALUEpseudo column,您需要知道集合ids的“类型名称”。此外,表类型必须是属性数据类型 - 换句话说,类型必须在模式级别而不是本地声明 - 这将此限制为VARRAY表类型和NESTED TABLE类型,即您不能使用关联数组。