我们如何从pl-sql集合中获取元素的索引号?

时间:2016-02-27 06:16:20

标签: oracle plsql oracle12c

我将一些数据记录从表中插入到集合类型表中,然后我想从集合中删除一些不满足条件的记录。

虽然从pl-sql集合中删除记录的唯一选择是使用DELETE方法,但我怎么能这样做呢?

2 个答案:

答案 0 :(得分:0)

假设您有一个名为myCollection的关联数组,由binary_integer索引,它应该如下所示:

DECLARE
   i BINARY_INTEGER;
BEGIN
   i := myCollection.FIRST;
   WHILE (i IS NOT NULL) LOOP
      IF (myCollection(i) ...) THEN
         myCollection.DELETE(i);
      END IF;
      i := myCollection.NEXT(i);
   END LOOP;
END;
/

答案 1 :(得分:-1)

我不确定您的数据库的确切语法是否正确,但您可以使用子查询来选择满足您条件的项目的ID。

DELETE FROM "Table"
  WHERE "Table"."ID" IN (( -- notice double parentheses
      SELECT "ID" -- this subquery returns the IDs for the rows you want to delete
        FROM "Table" -- which are then tested in the IN () statement
        WHERE "Table"."ConditionField" = 'Condition Satisfied'
    ))