我正在编写一个Oracle Procedure,我已经声明了一个嵌套数组来存储一些元素。我想看看集合中的所有元素是否相同。 我打开使用for循环或任何Oracle函数。
答案 0 :(得分:3)
也许你也可以使用SET操作:
DECLARE
type num_tab_type is table of number;
tab1 num_tab_type := num_tab_type(1,2,3,4);
BEGIN
IF SET(tab1).COUNT = 1 then
DBMS_OUTPUT.put_Line('All elements tab1 are the same');
END IF;
END;
/
也许你也在寻找IS A SET,这恰恰相反。
答案 1 :(得分:2)
您可以将multiselect union distinct
与空实例一起使用,然后使用COUNT
:
SET SERVEROUTPUT ON;
DECLARE
type num_tab_type is table of number;
tab1 num_tab_type := num_tab_type(1,2,3,4);
tab2 num_tab_type := num_tab_type(2,2,2);
tab_empty num_tab_type := num_tab_type();
tab num_tab_type;
BEGIN
tab:= tab1 MULTISET UNION DISTINCT tab_empty;
DBMS_OUTPUT.put_Line('tab1 ' ||
CASE WHEN tab.COUNT IN(0,1) THEN 'all elements are the same'
ELSE 'not all elements are the same' END);
tab:= tab2 MULTISET UNION DISTINCT tab_empty;
DBMS_OUTPUT.put_Line('tab2 ' ||
CASE WHEN tab.COUNT IN(0,1)THEN 'all elements are the same'
ELSE 'not all elements are the same' END);
END;
/
输出:
tab1 not all elements are the same
tab2 all elements are the same