【问题标题】:How to create a type that can be pass through in a stored procedure in out param?如何在 out 参数中创建可以在存储过程中传递的类型?
【发布时间】:2017-04-12 02:47:38
【问题描述】:

类型在存储过程中声明。

 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,以便我可以在过程的 out 参数中使用它来将复杂数组传输到 db 中的另一层。

【问题讨论】:

  • 您可以在包中定义这些类型,也可以在架构级别将colletreal_t 类型定义为对象,将colletrealtable_t 定义为嵌套表。
  • 你试过什么没用?

标签: sql oracle stored-procedures plsql types


【解决方案1】:

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

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.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-03
    • 2014-11-08
    • 2018-09-19
    • 2018-01-31
    • 1970-01-01
    • 2020-04-11
    相关资源
    最近更新 更多