我將一些表中的數據記錄插入到集合類型表中,然後我想從集合中刪除一些不滿足條件的記錄。我們如何從pl-sql集合中獲取元素的索引號?
我該怎麼做,儘管從DELETE方法中刪除記錄的唯一選擇是使用DELETE方法?
我將一些表中的數據記錄插入到集合類型表中,然後我想從集合中刪除一些不滿足條件的記錄。我們如何從pl-sql集合中獲取元素的索引號?
我該怎麼做,儘管從DELETE方法中刪除記錄的唯一選擇是使用DELETE方法?
假設你有一個名爲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;
/
我不確定此數據庫的確切語法是否正確,但您可以使用子查詢來選擇滿足條件的項目的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'
))
我們可以對pl-sql集合進行這種刪除嗎?我們不必使用DELETE(i)方法進行收集嗎? – SajjaD
使用'DELETE FROM table_name的WHERE some_column = some_value' –
@Tim Biegeleisen,該表是一個pl-sql集合類型而不是數據庫表,我不認爲我們可以像你說的那樣做DML。你確定嗎? – SajjaD
您需要迭代所有元素,檢查每個元素的條件,然後使用[delete](http://docs.oracle.com/cd/E11882_01/appdev.112/e25519/composites.htm#LNPLS99961)方法去除那些。 –