<<outer>>
declare
   v_deptno number(2);
   v_dname varchar2(10);
begin
  begin
   select deptno into v_deptno from emp
   where lower(ename)=lower('&name');
  end;--<<inner>>--
select dname into v_dname from dept
where deptno=v_deptno;
dbms_output.put_line('deptno:'  ||v_dname);
end; -- <<outer>>无法加入标记

解决方案 »

  1.   

    标记已经加了,就是<<outer>> <<inner>>
      

  2.   

    --刚写的 你自己对照下
    SQL> edi
    已写入 file afiedt.buf  1  declare
      2  begin
      3  <<outer>>
      4  declare
      5    v_deptno number;
      6    v_dname varchar2(10);
      7  begin
      8    begin
      9    select empno into v_deptno from emp
     10    where lower(empname)=lower(&name);
     11    end;
     12  <<inner>>
     13  dbms_output.put_line('deptno:' ||v_deptno);
     14  end;
     15* end;SQL> /
    输入 name 的值:  'wkc168'
    原值   10:   where lower(empname)=lower(&name);
    新值   10:   where lower(empname)=lower('wkc168');
    deptno:168PL/SQL 过程已成功完成。
      

  3.   


    --你的
    declare
    <<outer>>
    declare
      v_deptno number(2);
      v_dname varchar2(10);
    begin
      begin
      select deptno into v_deptno from emp
      where lower(ename)=lower('&name');
      end;
    <<inner>>
    select dname into v_dname from dept
    where deptno=v_deptno;
    dbms_output.put_line('deptno:' ||v_dname);
    end;
    end;
      

  4.   

    再问一下 plsql 调用存储过程是用execute 老是执行不了
      

  5.   

    sql窗口
    begin
    exec p1(传参值);
    end;命令窗口
    exec p1
      

  6.   

    給個例子BEGIN
    <<outer_loop>>
      FOR i IN 1..3 LOOP  -- assign the values 1,2,3 to i
        <<inner_loop>>
        FOR i IN 1..3 LOOP
          IF outer_loop.i = 2 THEN
            DBMS_OUTPUT.PUT_LINE( 'outer: ' || TO_CHAR(outer_loop.i) || ' inner: ' 
                                  || TO_CHAR(inner_loop.i));
          END IF;
        END LOOP inner_loop;
      END LOOP outer_loop;
    END;
      

  7.   


    <<outer>>
    declare
      v_deptno number(2);
      v_dname varchar2(10);
    begin
      <<inner>>  --你是想在这里写内部命名块吧
      begin
      select deptno into v_deptno from emp
      where lower(ename)=lower('&name');
      end;
      --<<inner>>
    select dname into v_dname from dept
    where deptno=v_deptno;
    dbms_output.put_line('deptno:' ||v_dname);
    end; 
    --<<outer>>
      

  8.   


    --sql窗口
    begin
    p1(传参值);
    end;--命令窗口
    exec p1
      

  9.   

    什么叫命名块?
    <<标识符>> 
    这是goto使用的标号.
      

  10.   

    学习了··
    declare
    begin
    <<outer>>
    declare
        StuClass varchar2(20);
        TeaName varchar2(20);
     begin
        <<inner>>
          begin
             select Stu_class into StuCLass from student where Stu_id= &Stuid;
          end;
        select Tname into TeaName from StuClass where Cl_name=StuCLass;
            dbms_output.put_line('老师姓名:'||TeaName);
     end;
     end;
    少了开头的俩
    declare
    beginend;
    所以总是出不来~