【问题标题】:Oracle: Update using IN (Association Array)Oracle:使用 IN(关联数组)更新
【发布时间】:2012-10-30 08:02:40
【问题描述】:

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

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

例子:

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

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

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

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

?????

【问题讨论】:

  • 看看this,它可能会有所帮助。这个one很相似。
  • 是的,看到了这些,但这不是我需要的。
  • 你能把你的数组放在架构级别吗?我的意思是作为 DB 类型而不是 plsql 类型
  • 我不明白,想解释一下吗?什么是 DB 类型和 PLSQL 类型?
  • @seesee,您的数组可以创建为架构中的对象,即create or replace type ANIMAL_ARRAY as TABLE OF NUMBER; 吗?而不是在 plsql 块内,即DECLARE type animal_array is table of number; aArray animal_array; BEGIN ...

标签: plsql oracle11g


【解决方案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 关键字将其称为常规表。

【讨论】:

  • 如果我不想创建类型..还有其他解决方案吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-08-16
  • 2015-07-21
  • 2012-09-20
  • 2011-07-07
  • 2021-12-09
  • 2013-09-14
  • 1970-01-01
相关资源
最近更新 更多