如何创建一个可以在out param中的存储过程中传递的类型?

时间:2016-11-28 11:32:47

标签: sql oracle stored-procedures plsql types

该类型在存储过程中声明。

 TYPE colletreal_t IS RECORD( 
      TeminatNo         NUMBER(10), 
      TeminatTutar      NUMBER(26, 2), 
      IpotekTutar       NUMBER(26, 2), 
      TeminatKalanTutar NUMBER(26, 2), 
      IpotekKalanTutar  NUMBER(26, 2), 
      MunferitTur       NUMBER(30), 
      TeminatTur        NUMBER(10), 
      IpotekMarjOran    NUMBER(12, 6), 
      TeminatTip        VARCHAR2(1),                  
      KarsiladigiRisk   NUMBER(26, 2)); 
   TYPE colletrealtable_t IS TABLE OF colletreal_t INDEX BY BINARY_INTEGER; 

如何将这些类型设置为colletrealtable_t,以便我可以在过程参数中使用它来将复杂数组传输到db中的另一个层。

1 个答案:

答案 0 :(得分:0)

您可以创建object,然后创建对象的type,然后将该集合用作该过程的out参数。如何创建object我留给你。下面是如何创建类型的例子。我创建了一种varchar。您可以创建object的类型。在示例中,我将一个集合传递给过程并填充其他集合。您可以将传递的参数用作out,并将其用于其他任何地方。

create  type var_a is table of varchar2(30000) ;           


 create or replace procedure collcetion_as_in_out_parmtr (
   a_var   in     var_a,
   b_var      out var_a)
as
begin
   --Assigning the input collection to out collection
   b_var := a_var;
end;

执行&输出:

SQL> set serverout on;
SQL> declare
  2     var var_a;
  3    begin
  4  
  5      collcetion_as_in_out_parmtr(var_a('A','B','C','D','E'),var);
  6      dbms_output.put_line('Elements of collection'); 
  7      for i in var.first..var.last 
  8      loop
  9       --displaying elements of collection
 10       dbms_output.put_line(var(i));
 11     end loop;
 12  
 13    end;
 14  /    

 Elements of collection
    A
    B
    C
    D
    E


PL/SQL procedure successfully completed.