2016-01-28 36 views
1

我有一個記錄的PLSQL嵌套表。如何檢查plsql嵌套表中的空元素?

type rec is record 
(a number, 
b number); 



type tab is table of rec; 

v_tab tab; 

我從批量查詢填充此集合;

select x,y bulk collect into v_tab from testtable; 

現在我需要找到v_tab集合中是否有任何記錄,其中v_tab.a爲空。我可以在沒有循環收集的情況下使用它(通過使用某些方法)嗎?

+4

如果你的Oracle版本是12.1或更高版本,可以使用TABLE()運算符來查詢您的收藏,但如果一箇舊的版本,則您的收藏需要已定義在模式級別上工作。看到這裏:http://stevenfeuersteinonplsql.blogspot.ca/2015/04/table-functions-introduction-and.html –

+0

我已經定義在包級別的類型,並嘗試相同的事情。它在12C爲我工作。但不幸的是我想讓它在11g上工作。 :( – user2974954

+0

不幸的是,使用11G,它要麼重新定義集合到模式級別,要麼循環訪問集合,希望我有另一種選擇給你... –

回答

0

這可能是你想要去的範圍之內,我不知道你的數據,但是......

什麼改變你的表類型的INDEX BY和使用NVL(A, - 999)作爲索引?

然後,你可以測試

IF v_tab.EXISTS(-999) 
THEN 
    -- Handle null value 
    ... 
END IF;