以下是查询:
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子句中包装子查询但是没有错误就无法做同样的事情:/
答案 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_VALUE
是pseudo column,您需要知道集合ids
的“类型名称”。此外,表类型必须是属性数据类型 - 换句话说,类型必须在模式级别而不是本地声明 - 这将此限制为VARRAY表类型和NESTED TABLE类型,即您不能使用关联数组。