刚学Oracle遇到书上一个关于全区变量的例题如下:
sql><<block>>
2 declare
3  a number:=1;
4 begin
5   dbms_output.put_line(a);
6 <<subblock>>
7   declare
8     a number:=2;
9   begin
10      dbms_output.put_line(a);
11      dbms_output.put_line(block.a);  ---引用父程序块变量
12   end;
13 end;
14 /
程序很简单,只是我用PLSQLDeveloper的command windows-new输入时,输到第三行输入分号之后就自动运行了,并且提示错误。
介是怎么回事呢,是不是我输入的地方不对啊,我还没输完怎么就自动运行了呢(另外,我在editor里面全部输完后在运行也还是运行不出来)。

解决方案 »

  1.   


    --直接调用就行,非得要整相同的名字吗?
    SQL> set serveroutput on;
    SQL> declare
      2   a number:=1;
      3   begin
      4        dbms_output.put_line(a);
      5        declare
      6        b number:=2;
      7        begin
      8             dbms_output.put_line(b);
      9             dbms_output.put_line(a);
     10             end;
     11   end;
     12  /
    --
    1
    2
    1
      

  2.   

    我在SQLPlus下运行没有问题,就是为什么不能在Developer里面运行?它们有什么区别
      

  3.   

    用PLSQL DEV 的话,应该新建一个测试窗口或程序窗口,因为你这段代码是个子程序, 不是一个SQL语句。
    你现在建的PLSQLDeveloper的command windows-new,不支持程序段的。
      

  4.   

    PLSQLDeveloper的command windows-new,不支持程序段。
      

  5.   

    实践证明:在test windows 下直接把程序(最后的‘/’去掉)复制到相应位置就可以运行了;
                     在SQL windows下需要把test windows下面的所有东西复制过去才可以运行;
                     在Progrom windows下有很多选项,试了几个不知道点哪个是运行
    看来,SQLPlus应该是PL/SQLDeveloper这些功能的总和吧
      谢谢大家的积极回复,结贴