<<Outer>>
DECLARE
  v_Num NUMBER := 10;
BEGIN
  DECLARE
    v_Num NUMBER := 20;
  BEGIN
    DBMS_OUTPUT.PUT_LINE(Outer.v_Num);
  END;
  DBMS_OUTPUT.PUT_LINE(v_Num);
END;
这段代码有错么??????在哪里???????????????

解决方案 »

  1.   

    你执行之后,如果报编译错误,但是又没有说具体错在哪一行,那么你可以用show errors命令来查看
      

  2.   

    ORA-06550: line 5, column 26:
    PLS-00201: identifier 'OUTER.V_NUM' must be declared
    ORA-06550: line 5, column 5:
    PL/SQL: Statement ignored
    ORA-06550: line 7, column 24:
    PLS-00201: identifier 'V_NUM' must be declared
    ORA-06550: line 7, column 3:
    PL/SQL: Statement ignored
    错误是这样的。
      

  3.   

    outer.v_num必须被声明
    v_num也必须被声明我今天好像回复了你两个贴子了,
    你是遇到了一个存储过程的问题吧呵呵,要是我的回复有用记得要结贴给分咯
      

  4.   

    你在子块里面又declare了一个v_Num,
    与主块声明部分的同名了你给它改个名字试试,
    或者直接赋值不要声明了pl/sql是有点难调的,不像程序,
    要耐心细致一点
      

  5.   

    一定,一定。
      但是:至少out.v_num定义了,不应该报它没有定义。
      

  6.   

    这个问题还没有结贴啊,让我盼分盼了好多天~~~~我帮你调了一下,发现以下代码是可以正确运行的,<<Outer>>
    DECLARE
      v_Num NUMBER := 10;
    BEGIN
      DECLARE
        v_Num NUMBER := 20;
      BEGIN
        DBMS_OUTPUT.PUT_LINE(Outer.v_Num);
      END;
      DBMS_OUTPUT.PUT_LINE(v_Num);
    END; 你不能通过的原因在于你第一行的< <Outer>>多了一个空格接分,呵呵~~~~~~