小弟刚开始学习游标,请帮我看一下到底是什么问题:
   我测试scott用户下的EMP表
代码如下:
declare
 v_depno emp.deptno%type;
 cussor c_emp is  select * from emp where deptno=v_depno;
 v_emp c_emp%rowtype;
 begin
  v_deptno :=&x;
open c_tmp;
 loop
 fetch c_emp into v_emp;
 exit when c_emp%notfound;
 dbms_output.put_line(v_emp.empno ||' '|| v_emp.ename||' '||' 'v_emp.sal||' '||v_depno);
 end loop;
 close c_emp;
end;=====================================================执行输入部门编号20
报错ORA-06550
ORA-00103 
请指点一下,谢谢各位了!

解决方案 »

  1.   

    fetch c_emp into v_emp;
    中v_emp貌似沒有定義!
      

  2.   

    v_emp c_emp%rowtype;--第四行定义了
    我plsql和toad都试过了,都不行!
      

  3.   

    cussor c_emp is select * from emp where deptno=v_depno;
    这个应该是cursordbms_output.put_line(v_emp.empno ||' '|| v_emp.ename||' '||' 'v_emp.sal||' '||v_depno);
    这个应该是
    dbms_output.put_line(v_emp.empno ||' '|| v_emp.ename||' '||v_emp.sal||' '||v_depno);
      

  4.   


    DECLARE
      V_DEPNO EMP.DEPTNO%TYPE;
      CURSOR C_EMP IS  --关键字是CURSOR 不是 CUSSOR
        SELECT * FROM EMP WHERE DEPTNO = V_DEPNO;
      V_EMP C_EMP%ROWTYPE;
    BEGIN
      V_DEPNO := &X;   --和上面一致V_DEPNO 不是DEPTNO
      OPEN C_EMP;      --定义是C_EMP 不是C_TMP
      LOOP
        FETCH C_EMP
          INTO V_EMP;
        EXIT WHEN C_EMP%NOTFOUND;
        DBMS_OUTPUT.PUT_LINE(V_EMP.EMPNO || ' ' || V_EMP.ENAME || ' ' ||
                             V_EMP.SAL || ' ' || V_DEPNO); --V_EMP.SAL 前面的''是干嘛的?
      END LOOP;
      CLOSE C_EMP;
    END;
      

  5.   


    --打错一堆单词……
    declare
     v_deptno emp.deptno%type;   --这里v_deptno
     cursor c_emp is select * from emp where deptno=v_deptno;  --是cursor……
     v_emp c_emp%rowtype;
     begin
      v_deptno :=&x;
    open c_emp; --是c_emp 不是c_tmp
    loop
    fetch c_emp into v_emp;
    exit when c_emp%notfound;
    dbms_output.put_line(v_emp.empno||' '||v_emp.ename||' '||' '||v_emp.sal||' '||v_deptno);
    end loop;
    close c_emp;
    end;
    /