[code=SQL]
declare 
type eName is recrod(
        emp_name emp.ename%type
);
empName eName;
cursor c1 is select ename from emp;
begin
    open c1;
    loop
        fetch c1 into empName;
        exit when c1%notfound;
        dbms_output.put_line(empName.emp_name);
    end loop;
    close c1;
end;
/[/code]

解决方案 »

  1.   


    declare emp_name emp.ename%type;cursor c1 is select ename from emp;
    begin
        open c1;
        loop
            fetch c1 into emp_name;
            exit when c1%notfound;
            dbms_output.put_line(emp_name);
        end loop;
        close c1;
    end;
      

  2.   

    謝謝1L,但為什麼用記錄便會有錯,上面如何使用record才不會有錯?
      

  3.   

    SQL> set serveroutput on
    SQL> 
    SQL> DECLARE
      2    V_ENAME EMP.ENAME%TYPE;
      3    CURSOR C1 IS
      4      SELECT ENAME FROM EMP;
      5  BEGIN
      6    OPEN C1;
      7    LOOP
      8  
      9      FETCH C1
     10        INTO V_ENAME;
     11      EXIT WHEN C1%NOTFOUND;
     12      DBMS_OUTPUT.PUT_LINE(V_ENAME);
     13  
     14    END LOOP;
     15    CLOSE C1;
     16  END;
     17  /
     
    SMITH
    ALLEN
    WARD
    JONES
    MARTIN
    BLAKE
    CLARK
    SCOTT
    KING
    TURNER
    ADAMS
    JAMES
    FORD
    MILLER
     
    PL/SQL procedure successfully completed
      

  4.   

    請問如何使用record才不會出錯,初學謝謝了,各位
      

  5.   

    SQL> DECLARE
      2    TYPE EMPTYPE IS RECORD(
      3      ENAME emp.ename%TYPE);
      4    EMPNAME EMPTYPE;
      5    CURSOR C1 IS
      6      SELECT ENAME FROM EMP;
      7  BEGIN
      8    OPEN C1;
      9    LOOP
     10      FETCH C1
     11        INTO EMPNAME;
     12      EXIT WHEN C1%NOTFOUND;
     13      DBMS_OUTPUT.PUT_LINE(EMPNAME.ENAME);
     14    END LOOP;
     15    CLOSE C1;
     16  END;
     17  
     18  /
     
    SMITH
    ALLEN
    WARD
    JONES
    MARTIN
    BLAKE
    CLARK
    SCOTT
    KING
    TURNER
    ADAMS
    JAMES
    FORD
    MILLER
     
    PL/SQL procedure successfully completedemp_name这个名称有问题,换个名称就行了! 
      

  6.   


    declare
      type eName_record is record(emp_name emp.ename%type);
      empName eName_record;
      cursor c1 is
        select ename from emp;
    begin
      open c1;
      loop
        fetch c1
          into empName.emp_name;
        exit when c1%notfound;
        dbms_output.put_line(empName.emp_name);
      end loop;
      close c1;
    end;
      

  7.   

    才看到  你的record 写错了~  你写成recrod了declare
      type eName_record is record(emp_name emp.ename%type);
      empName eName_record;
      cursor c1 is
        select ename from emp;
    begin
      open c1;
      loop
        fetch c1
          into empName.emp_name;
        exit when c1%notfound;
        dbms_output.put_line(empName.emp_name);
      end loop;
      close c1;
    end;
      

  8.   

    知道了,你的语句哪里复制黏贴的?带有特殊字符
    用我下面的这个SQL> DECLARE
      2    TYPE ENAME IS RECORD(
      3      EMP_NAME emp.ename%TYPE);
      4    EMPNAME ENAME;
      5    CURSOR C1 IS
      6      SELECT ENAME FROM EMP;
      7  BEGIN
      8    OPEN C1;
      9    LOOP
     10      FETCH C1
     11        INTO EMPNAME;
     12      EXIT WHEN C1%NOTFOUND;
     13      DBMS_OUTPUT.PUT_LINE(EMPNAME.EMP_NAME);
     14    END LOOP;
     15    CLOSE C1;
     16  END;
     17  
     18  /
     
    SMITH
    ALLEN
    WARD
    JONES
    MARTIN
    BLAKE
    CLARK
    SCOTT
    KING
    TURNER
    ADAMS
    JAMES
    FORD
    MILLER
     
    PL/SQL procedure successfully completed