2015-09-11 58 views
0

是否有办法将所有表格数组类型转换为全部相同类型。在这种情况下像generic_array类型?我试图返回字母顺序没有任何愚蠢,但首先我需要将所有数组转换为相同的类型。然后将Oracle表格数组类型转换为单个表格数组类型

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; 

回答

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; 
+0

它的工作,但遗留代码阻止我现在从固定的,所以我正在寻找一个解决办法。 – RetroCoder

+0

我只用一种类型来执行统计操作,然后将它们复制回三个数组中。 – RetroCoder

相关问题