插入对象类型并从存储过程返回

时间:2014-08-25 16:22:54

标签: sql oracle plsql oracle11g plsqldeveloper

我是一名表员工

EMPID                  EMPNAME                                                                                             
---------------------- ---------------------------------------------------------------------------------------------------- 
1                      prabhu                                                                                               
2                      b                                                                                                    
3                      c  

我想编写将输出参数作为OBJECT发送的存储过程。

我在proc中的选择查询是

SELECT EMPID, EMPNAME FROM EMPLOYEE;

这将有多行,因此我想将此结果集作为对象

传递

现在我已将类型创建为

CREATE OR REPLACE TYPE EMP IS OBJECT
    (EMPNO NUMBER,EMPNAME VARCHAR2(100));

PROC:

create or replace PROCEDURE TYPEOUT(EOUT OUT EMP) AS

<code>

BEGIN

<CODE>
END TYPEOUT;

请帮我完成过程。

由于

1 个答案:

答案 0 :(得分:1)

如果要返回多行,则需要一个支持多个实例的对象。这是一个集合类型,例如嵌套表:

CREATE OR REPLACE TYPE EMP_NT AS TABLE OF EMP;

我们使用BULK操作填充嵌套表。所以你的过程看起来像这样(注意参数datatype的变化):

create or replace PROCEDURE TYPEOUT(EOUT OUT EMP_NT) 
AS
BEGIN
    select emp(empid, empname)
    bulk collect into eout
    from employee;
END TYPEOUT;

读取对find out more about collections的PL / SQL引用。此外,该程序将使from exception handling受益。

相关问题