创建自定义类型:
create or replace type fnType is varray(9) of number;
创建函数:
create or replace function test
 (dt out  dt1)
  return dt1
  is
 result dt1;
 temp varchar2(4);
begin
  for i in 1..dt.count
  loop
    for j in 1..i
      loop
         if(dt(i)<dt(j)) then
         begin
           temp:=dt(i);
           dt(i):=dt(j);
           dt(j):=temp;
         end;
         end if;
       end loop;
   end loop;  for i in 1..dt.count
  loop
  result(i):=dt(i);
  end loop;
  return(Result);
end test;
我在调用函数是应该如何传递一个数组参数,能给个例子最好。

解决方案 »

  1.   

    举例:
    SQL> create or replace type fnType is varray(3) of number;
      2  /
     
    Type created
     
    SQL> 
    SQL> create or replace function test
      2  (dt in out fnType)
      3  return fnType
      4  is
      5  result fnType :=fnType(null,null,null);
      6  temp varchar2(4);
      7  begin
      8  for i in 1..dt.count
      9  loop
     10  for j in 1..i
     11  loop
     12  if(dt(i)<dt(j)) then
     13  begin
     14  temp:=dt(i);
     15  dt(i):=dt(j);
     16  dt(j):=temp;
     17  end;
     18  end if;
     19  end loop;
     20  end loop;
     21  
     22  for i in 1..dt.count
     23  loop
     24  result(i):=dt(i);
     25  end loop;
     26  return(Result);
     27  end test;
     28  /
     
    Function created
     
    SQL> 
    SQL> declare
      2  a fnType :=fnType(5,9,4);
      3  begin
      4  a :=test(a);
      5  for i in 1..a.count loop
      6  dbms_output.put_line(a(i));
      7  end loop;
      8  end;
      9  /
     
    4
    5
    9
     
    PL/SQL procedure successfully completed