Oracle:使用IN(关联数组)更新

时间:2012-10-30 08:02:40

标签: plsql oracle11g

我已经生成了一个包含所有主键的关联数组(aArray)列表。

我可以知道如何使用它来更新这些主键吗?

示例:

Update animal an set status='dead' where an.pk in (aArray)

我可以知道除了以下方法之外还有其他方法:

1)循环数组并单独更新每条记录?(性能)

2)循环数组并绘制元素字符串。 (23123,3123,3123,3123,123)

···

1 个答案:

答案 0 :(得分:1)

如果您可以在架构级别中将阵列作为类型​​,那么您可以尝试这样的事情:

create or replace type ANIMAL_ARRAY as TABLE OF NUMBER;
/

DECLARE
  aArray ANIMAL_ARRAY := new ANIMAL_ARRAY(1,2,3);
BEGIN
  Update animal an set status='dead' 
   where an.pk in (select column_value from table(aArray));
END;

如果数组是架构级别类型,那么您可以使用table关键字将其称为常规表。