1、你定义的【RET_CURSOR_VALUE】是一个光标变量,当他作为参数传入过程【GET_EMPINFOBYDEPNO】时候已经被打开(就是open...for),在主程序中再度打开是没有必要的也是错误的(且光标变量只能用【open...for】的形式打开)。2、所以把【OPENRET_CURSOR_VALUE】这句话删掉,就没有问题了。*******************************口说无凭,oracle实施log请参照:说明:我把empno改成20了(因为表里面没有1的数据),还有把open语句注掉了。*******************************[SCOTT@ORA1]SQL>DECLARE2RET_CURSOR_VALUEPKG_CONST.REF_CURSOR;3RET_EMPNOEMP.EMPNO%TYPE;4RET_ENAMEEMP.ENAME%TYPE;5BEGIN6GET_EMPINFOBYDEPNO(20,RET_CURSOR_VALUE);7--OPENRET_CURSOR_VALUE;--报游标类型有误,未解决!!!8LOOP9FETCHRET_CURSOR_VALUE10INTORET_EMPNO,RET_ENAME;11EXITWHENRET_CURSOR_VALUE%NOTFOUND;12DBMS_OUTPUT.PUT_LINE('empNois:'||RET_EMPNO||',empNameis'||13RET_ENAME);14ENDLOOP;15CLOSERET_CURSOR_VALUE;16END;17/empNois:7369,empNameisSMITHempNois:7566,empNameisJONESempNois:7902,empNameisFORD---以上,希望对你有所帮助。