函数和游标 HELP ORACLE PL/SQL

Function & Cursor HELP ORACLE PL/SQL

正在尝试获取此输出:

   SELECT E.ID_EMPLEADO ,E.APEMPPAT  , E.ID_JEFE   
     FROM EMPLEADOS E
     WHERE E.ID_SUCURSAL=4
     CONNECT BY PRIOR E.ID_EMPLEADO = E.ID_JEFE ;

有这个功能

    CREATE OR REPLACE FUNCTION EMPLO_FUN
(V_EMPL_SUC IN EMPLEADOS.ID_SUCURSAL%TYPE) 
RETURN VARCHAR2
IS
    V_NEMP_HASR EMPLEADOS.ID_EMPLEADO%TYPE;
    V_DEP_HASR  EMPLEADOS.APEMPPAT%TYPE;
    V_JURIS_HASR EMPLEADOS.ID_JEFE%TYPE;
CURSOR C1
IS 
   SELECT E.ID_EMPLEADO ,E.APEMPPAT, E.ID_JEFE  
     INTO  V_NEMP_HASR, V_DEP_HASR, V_JURIS_HASR 
     FROM EMPLEADOS E
     WHERE E.ID_SUCURSAL=V_EMPL_SUC
     CONNECT BY PRIOR E.ID_EMPLEADO = E.ID_JEFE ;
   BEGIN

   OPEN c1;
    FETCH c1 INTO V_NEMP_HASR, V_DEP_HASR, V_JURIS_HASR;


   CLOSE c1;
   RETURN V_NEMP_HASR;
    RETURN V_DEP_HASR;
    RETURN V_JURIS_HASR;
    END;

 SELECT EMPLO_FUN (4) FROM DUAL;

我知道函数主要是return一个值搜索发现我可以使用游标来获取多个值,但我需要帮助,我认为缺少一些循环语句

在您的查询中,您 returning VARCHAR2 这将 return 只有一个值。相反,你应该 return SYS_REFCURSOR

CREATE OR REPLACE FUNCTION EMPLO_FUN (V_EMPL_SUC IN EMPLEADOS.ID_SUCURSAL%TYPE) 
RETURN SYS_REFCURSOR
AS
    V_MYRESULT SYS_REFCURSOR;
BEGIN
    OPEN V_MYRESULT FOR
        SELECT E.ID_EMPLEADO ,E.APEMPPAT, E.ID_JEFE  
        FROM EMPLEADOS E
        WHERE E.ID_SUCURSAL=V_EMPL_SUC
        CONNECT BY PRIOR E.ID_EMPLEADO = E.ID_JEFE ;

RETURN V_MYRESULT;
END;

那么 SELECT EMPLO_FUN (4) FROM DUAL; 应该会给你预期的结果。