我有一个名为test的普通表,它有一堆列。
然后我有一个UDT,其行对应于那些列。
我想要做的是创建一个从表中获取数据的过程,然后为每一行创建该UDT的新实例,然后返回这些udt的列表。
我已经进行了广泛的搜索,但我是所有这一切的绝对初学者,我还没有找到答案。
有人能指出我正确的方向吗?
答案 0 :(得分:1)
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;