我已經得到了對象的類型表的這個變量的過程:PLSQL - 檢查對象存在於對象表 - 類型沒有地圖
lsa_final_filter_ports t_modifylink_multicolumnlist;
lsa_initial_filter_ports t_modifylink_multicolumnlist;
的t_modifylink_multicolumnlist
定義是:
CREATE OR REPLACE TYPE "T_MODIFYLINK_MULTICOLUMNLIST" IS TABLE OF o_modifylink_multicolumnlist;
TYPE o_modifylink_multicolumnlist AS OBJECT(some properties);
lsa_final_filter_ports
變量填充這樣
SELECT b.name INTO ls_bandwidth_name FROM bandwidth b
WHERE b.bandwidthid = lna_compatible_port_bw(i);
SELECT CAST(MULTISET(SELECT *
FROM TABLE(piosa_all_ports)
WHERE ITEMNAME4 = ls_bandwidth_name)
AS t_modifylink_multicolumnlist)
INTO lsa_final_filter_ports
FROM dual;
凡piosa_all_ports
是I/O參數具有相同類型t_modifylink_multicolumnlist
第二個參數是在過程的beginig與該程序具有
lsa_initial_filter_ports := piosa_filtered_ports;
我想要實現的是第二I/O參數初始化,以檢查是否從物體lsa_final_filter_ports
存在於lsa_initial_filter_ports
中,如果是,則跳過在lsa_initial_filter_ports
中添加該對象,該對象將是外部調用過程使用的輸出參數。
我已經嘗試通過lsa_final_filter_ports
對象迭代,並檢查該對象是否已經存在這樣的:
FOR i in 1..lsa_final_filter_ports.COUNT LOOP
IF lsa_final_filter_ports(i) MEMBER OF lsa_initial_filter_ports THEN
CONTINUE;
END IF;
lsa_initial_filter_ports.EXTEND();
lsa_initial_filter_ports(lsa_initial_filter_ports.COUNT) := lsa_final_filter_ports(i);
END LOOP;
但有了這個代碼,我發現了以下錯誤:
Error: PLS-00801: internal error [*** ASSERT at file pdw4.c, line 2181; Type 0x0x7f991127aef8 has no MAP method.; NR_WIZARDVALIDATIONS__CUSTOMISATIONS__B__166833[33]
我不確定是否可以做出這種比較,也許有人可以澄清這一點。
謝謝
您使用的是哪個Oracle版本?從這個[link](http://stackoverflow.com/questions/35934650/internal-error00801-on-combining-two-collections-in-oracle-10g),這個錯誤發生在Oracle 10g中。 –
我正在使用oracle 11.2.0 –