这可能看起来很傻,但是我想知道这是否可能。
我有一个返回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)...
否,根本不带ref cursor
,否则就不是没有创建SQL类型以将返回值强制转换为,例如以下示例:http://dbaspot.com/oracle-server/9308-select-ref-cursor.html:
为此,您可能想看一下PIPELINED
功能。但是,您将必须在PL / SQL级别声明显式类型。该部分将设置输出列名称:
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;
/