2016-02-27 72 views
0

我將一些表中的數據記錄插入到集合類型表中,然後我想從集合中刪除一些不滿足條件的記錄。我們如何從pl-sql集合中獲取元素的索引號?

我該怎麼做,儘管從DELETE方法中刪除記錄的唯一選擇是使用DELETE方法?

+0

使用'DELETE FROM table_name的WHERE some_column = some_value' –

+0

@Tim Biegeleisen,該表是一個pl-sql集合類型而不是數據庫表,我不認爲我們可以像你說的那樣做DML。你確定嗎? – SajjaD

+1

您需要迭代所有元素,檢查每個元素的條件,然後使用[delete](http://docs.oracle.com/cd/E11882_01/appdev.112/e25519/composites.htm#LNPLS99961)方法去除那些。 –

回答

0

假設你有一個名爲myCollectionbinary_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

我不確定此數據庫的確切語法是否正確,但您可以使用子查詢來選擇滿足條件的項目的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' 
    )) 
+0

我們可以對pl-sql集合進行這種刪除嗎?我們不必使用DELETE(i)方法進行收集嗎? – SajjaD

相關問題