从行中选择数据到oracle udt对象的集合中

时间:2014-01-04 15:00:28

标签: oracle user-defined-types

我有一个名为test的普通表,它有一堆列。

然后我有一个UDT,其行对应于那些列。

我想要做的是创建一个从表中获取数据的过程,然后为每一行创建该UDT的新实例,然后返回这些udt的列表。

我已经进行了广泛的搜索,但我是所有这一切的绝对初学者,我还没有找到答案。

有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:1)

SQL Fiddle

Oracle 11g R2架构设置

CREATE TABLE Test ( A, B, C, D, E ) AS
SELECT LEVEL, LEVEL * 500, SQRT( LEVEL ), CHR( 64 + LEVEL ), RPAD( CHR( 64 + LEVEL ), 8, CHR( 64 + LEVEL ) )
FROM DUAL
CONNECT BY LEVEL <= 26
/

CREATE TYPE Test_Record AS OBJECT (
  A NUMBER,
  B NUMBER,
  C NUMBER,
  D CHAR(1),
  E CHAR(8)
)
/

CREATE TYPE Test_Record_Table AS TABLE OF Test_Record
/

CREATE PROCEDURE get_Table_Of_Test_Records (
  p_records OUT Test_Record_Table
)
IS
BEGIN
  SELECT Test_Record( A, B, C, D, E )
  BULK COLLECT INTO p_records
  FROM   Test;
END get_Table_Of_Test_Records;
/

查询1

DECLARE
  trt Test_Record_Table;
BEGIN
  get_Table_Of_Test_Records( trt );

  -- Do something with the collection.
END;