Oracle 从过程返回表类型

Oracle 从过程返回表类型,oracle,oracle11g,bulk-collect,Oracle,Oracle11g,Bulk Collect,我测试这段代码是为了从一个过程返回一个表类型,但是我得到了一个我认为不应该发生的错误,因为我正在获取整行employees表的表类型 CREATE OR REPLACE PACKAGE test_pkg IS TYPE my_rec IS TABLE OF employees%ROWTYPE; PROCEDURE my_proc(p_out OUT my_rec); END; / CREATE OR REPLACE PACKAGE BODY test_pkg AS PROC

我测试这段代码是为了从一个过程返回一个表类型,但是我得到了一个我认为不应该发生的错误,因为我正在获取整行employees表的表类型

CREATE OR REPLACE PACKAGE test_pkg
IS

  TYPE my_rec IS TABLE OF employees%ROWTYPE;

  PROCEDURE my_proc(p_out OUT my_rec);

END;
/

CREATE OR REPLACE PACKAGE BODY test_pkg
AS

  PROCEDURE my_proc(p_out OUT my_rec) AS BEGIN

      SELECT
        employee_id,
        first_name,
        last_name BULK COLLECT INTO p_out
      FROM employees;
    END;

END;
/
6/65 PL/SQL:ORA-00913:值太多6/1 PL/SQL:SQL语句被忽略


另外,使用表类型over REF CURSOR从过程返回值的优缺点是什么?

尝试选择*而不是选择员工id、名字、姓氏。请提供员工表的表结构。由于此错误通常发生在select和type中的列数不匹配的情况下。人力资源方案中的EMPLOYEE表可能是重复的