2012-10-30 78 views
1

我已经产生相关阵列(aArray)的列表包含所有的主键更新。甲骨文:使用IN(协会阵列)

愿我知道我可以用它来更新这些主键?

实施例:

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

可能我知道有以下方法旁道:?)循环阵列和单独地更新每个记录

1(性能)

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

?????

+0

看一看[这](http://www.oracle-base.com/articles/9i/associative-arrays-9i.php),它可能有一定的帮助。这[一](http://psoug.org/reference/arrays.html)非常相似。 – user75ponic

+0

是的,但那不是我所需要的。 – seesee

+0

你可以让你的数组在模式级别?我的意思是数据库类型,而不是一个plsql类型 –

回答

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关键字来参考一下吧作为常规表格。

+0

如果我不希望创建类型..有没有其他解决办法? – seesee