有没有办法转换所有表数组类型,以便它们都是相同的类型。在这种情况下,像generic_array类型?我试图按顺序返回字母表而没有任何欺骗,但首先我需要将所有数组转换为相同的类型。
declare
type type1_array is table of varchar2(80);
type type2_array is table of varchar2(80);
type type3_array is table of varchar2(80);
type generic_array is table of varchar2(80);
TableType1 type1_array DEFAULT type1_array();
TableType2 type2_array DEFAULT type2_array();
TableType3 type3_array DEFAULT type3_array();
TableTypeGeneric generic_array DEFAULT generic_array();
begin
TableType1 := type1_array ('a', 'b', 'c', 'd', 'e', 'k', 'f', 'g', 'h', 'i');
TableType2 := type2_array ('c', 'd', 'f', 'h', 'i', 'j', 'm');
TableType3 := type3_array ('j', 'l', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z');
TableTypeGeneric := cast(type1_array as generic_array) union cast(type2_array as generic_array) union cast(type3_array as generic_array);
end;
答案 0 :(得分:1)
从一开始就声明为同一类型:
DECLARE
TYPE Varchar2_Array IS TABLE OF VARCHAR2(80);
array1 Varchar2_Array := Varchar2_Array('a', 'b', 'c', 'd', 'e', 'k', 'f', 'g', 'h', 'i');
array2 Varchar2_Array := Varchar2_Array('c', 'd', 'f', 'h', 'i', 'j', 'm');
array3 Varchar2_Array := Varchar2_Array('j', 'l', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z');
array4 Varchar2_Array;
BEGIN
array4 := array1 MULTISET UNION DISTINCT array2 MULTISET UNION DISTINCT array3;
END;