try:DECLARE  
v_ename EMP.ENAME%TYPE; 
v_accept date; 
CURSOR c_emp IS SELECT enameFROM emp;  
BEGIN  
OPEN c_emp;  
    LOOP  
    EXIT WHEN c_emp%NOTFOUND;
    FETCH c_emp INTO v_ename;
select jl_test(v_ename) into v_accept from dual;
DBMS_OUTPUT.PUT_LINE(v_accept );        
END ; 

解决方案 »

  1.   

    必须先判断 EXIT WHEN c_emp%NOTFOUND;
      

  2.   

    我写的和楼上写的也不一样
    try DECLARE  
    v_ename EMP.ENAME%TYPE; 
    v_accept date; 
    CURSOR c_emp IS SELECT enameFROM emp;  
    BEGIN  
    OPEN c_emp;  
        LOOP  
        FETCH c_emp INTO v_ename;
        EXIT WHEN c_emp%NOTFOUND;
        select jl_test(v_ename) into v_accept from dual;
    DBMS_OUTPUT.PUT_LINE(v_accept );        
    END ;
      

  3.   

    游标下移的时候应该先判断是否还能取到值,否则即使没有取得新值,由于v_ename仍保持的最后一条记录的值,所以执行
    select jl_test(v_ename) into v_accept from dual;
    仍然是有结果输出的
      

  4.   

    EXIT WHEN c_emp%NOTFOUND;  放前面啦~