需要帮助来创建将返回包含对象的对象类型的过程

Posted

技术标签:

【中文标题】需要帮助来创建将返回包含对象的对象类型的过程【英文标题】:need help to create a procedure that will return an object type which contains objects 【发布时间】:2019-07-24 11:47:59 【问题描述】:

我正在尝试创建一个 oracle 过程,该过程将返回一个对象作为某些输入的输出。返回的对象需要是包含其他对象的嵌套对象。 示例:

create or replace type DEMO_TYPE as object (ID number,RESPONSE_TXT VARCHAR2(1000));

create or replace type DEMO_LIST IS TABLE OF DEMO_TYPE;

create or replace type DEMO_MASTER AS Object(
demos DEMO_LIST
);

create table demo as (ID number,RESPONSE_TXT VARCHAR2(1000));

我想创建一个过程,它将 id 作为输入并返回一个对象(比如 DEMO_MASTER ),该对象将包含表 demo 的所有行,比如具有相同 id 的对象(比如 DEMO_TYPE )。 我正在使用 oracle 11g。 提前致谢。

【问题讨论】:

【参考方案1】:

程序:

create or replace procedure find_demos(i_id in number, o_demo out demo_master) is
  v_demo_list   demo_list;
  v_demo_master demo_master := demo_master(null);
begin
  select demo_type(id, response_txt)
    bulk collect into v_demo_list
    from demo
    where id = i_id;

  v_demo_master.demos := v_demo_list;
  o_demo := v_demo_master;
end;

测试:

declare 
  d demo_master;
begin
  find_demos(2, d);
  dbms_output.put_line(d.demos(1).response_txt);
  dbms_output.put_line(d.demos(2).response_txt);
end;

dbfiddle demo

【讨论】:

以上是关于需要帮助来创建将返回包含对象的对象类型的过程的主要内容,如果未能解决你的问题,请参考以下文章

89.关于类的定义抽象数据类型

类2(构造)

面向对象基础

建造者模式(套餐模式)

1如何声明一个类?如何创建类的对象?

概述反射和序列化?