具有特定列的sql函数返回sys_refcursor调用

问题描述 投票:3回答:3

这可能看起来很傻,但是我想知道这是否可能。

我有一个返回sys_refcursor的函数

CREATE OR REPLACE FUNCTION get_employee_details(p_emp_no IN EMP.EMPNO%TYPE)
   RETURN SYS_REFCURSOR
AS
   o_cursor   SYS_REFCURSOR;
BEGIN
   OPEN o_cursor FOR
      SELECT EMPNO,
             ENAME,
             JOB,
             MGR,
             HIREDATE,
             SAL,
             COMM,
             DEPTNO
        FROM emp
       WHERE EMPNO = p_emp_no;

   RETURN o_cursor;
 -- exception part
END;
/

我可以使用]得到结果>

select  get_employee_details('7369') from dual;

是否可以通过指定列名从上述函数中获得结果?例如。如果我想获取姓名或薪水,如何在不使用plsql块的情况下在sql语句中指定?像

之类的东西
select  get_employee_details('7369') <specific column> from dual;

这可能看起来很傻,但是我想知道这是否可能。我有一个返回sys_refcursor CREATE或REPLACE FUNCTION get_employee_details(p_emp_no IN EMP.EMPNO%TYPE)...

sql function plsql oracle10g sys-refcursor
3个回答
3
投票

否,根本不带ref cursor,否则就不是没有创建SQL类型以将返回值强制转换为,例如以下示例:http://dbaspot.com/oracle-server/9308-select-ref-cursor.html


9
投票

为此,您可能想看一下PIPELINED功能。但是,您将必须在PL / SQL级别声明显式类型。该部分将设置输出列名称:


0
投票
CREATE OR REPLACE FUNCTION get_employee_details(p_emp_no IN EMP.EMPNO%TYPE)
   RETURN SYS_REFCURSOR
AS
   o_cursor   SYS_REFCURSOR;
BEGIN
   OPEN o_cursor FOR
      SELECT EMPNO,
             ENAME,
             JOB,
             MGR,
             HIREDATE,
             SAL,
             COMM,
             DEPTNO
        FROM emp
       WHERE EMPNO = p_emp_no;

   RETURN o_cursor;
 -- exception part
END;
/
© www.soinside.com 2019 - 2024. All rights reserved.