解决方案 »

  1.   


    SQL窗口识别不了第一个关键字,这个是工具决定的。最好是在调试窗口去执行。
      

  2.   

    第9行 条件查询into v_depno无数据返回。
      

  3.   

    select into 没有数据导致报错
      

  4.   

    数据导入有误是因为调试没办法输入值(额,或者我不知道怎么调试),改成下面就可以了,但是还是没解决我的开头的困惑。<<outer>>
    DECLARE
    v_deptno NUMBER(2);
    v_dname VARCHAR2(10);
    BEGIN
    <<inner>>
    BEGIN
    SELECT deptno INTO v_deptno FROM scott.emp
    WHERE lower(ename)=lower('scott');
    END;--<<inner>>
    SELECT dname INTO v_dname FROM scott.dept
    WHERE deptno= v_deptno;
    dbms_output.put_line('部门名:'||v_dname);
    END;--<<outer>>
      

  5.   


    SQL窗口识别不了第一个关键字,这个是工具决定的。最好是在调试窗口去执行。按照版主的解释,我是不可以理解为这个是SQL窗口模式的特殊BUG。
      

  6.   

    <<>>里定义的是block label,可以在goto中使用。这是属于pl/sql中的,因此在PL/SQL DEV的SQL窗口中支持不是很好
    最外层再加一层begin end;就好了并不是Bug。pl/sql dev将你这段代码解析成3段来单独运行,因此每段都不对了
      

  7.   

    非常感谢版主的解答,加上begin end,确实好了,不过你说的这个goto中使用是什么(goto?没用过)。
      

  8.   

    block label基本上就是给goto用的
    就像书签就是用来翻页的例如begin
    <<outer>>
    DECLARE
        v_deptno NUMBER(2);
        v_dname VARCHAR2(10);
    BEGIN
        <<inner>>
        BEGIN
            SELECT deptno INTO v_deptno FROM scott.emp
            WHERE lower(ename)=lower('SMITH');
        END;--<<inner>>
        goto lab; --跳到label <<lab>>处
        SELECT dname INTO v_dname FROM scott.dept
        WHERE deptno= v_deptno;
        dbms_output.put_line('部门名:'||v_dname);
    END;
    <<lab>>
    null;
    end;