Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1702841
  • 博文数量: 136
  • 博客积分: 10021
  • 博客等级: 上将
  • 技术积分: 3261
  • 用 户 组: 普通用户
  • 注册时间: 2007-01-22 11:26
文章分类

全部博文(136)

文章存档

2010年(1)

2009年(26)

2008年(109)

我的朋友

分类: Oracle

2009-07-02 20:24:39

今天做代码review,发现一个不太有趣的bug。对于下面的代码,Oracle能否执行呢:
 
BEGIN
  FOR i IN 1..4 LOOP
    dbms_output.put_line(i);
  END LOOP -- 这里没有分号!
  COMMIT;
END;
 
这里少个分号,但Oracle仍然执行成功了!
 
SQL> select * from v$version;
 
BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bi
PL/SQL Release 10.2.0.1.0 - Production
CORE 10.2.0.1.0 Production
TNS for Linux: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production
 
SQL> set serveroutput on
SQL> BEGIN
  2    FOR i IN 1..4 LOOP
  3      dbms_output.put_line(i);
  4    END LOOP
  5    COMMIT;
  6  END;
  7  /
 
1
2
3
4
 
PL/SQL procedure successfully completed
 
经测试,如果end loop和commit之间再有语句,就编译不过去了,提示缺少分号。
阅读(2263) | 评论(2) | 转发(0) |
0

上一篇:Oracle - 位操作

下一篇:Oracle 外部表的创建

给主人留下些什么吧!~~

chinaunix网友2009-07-14 08:25:51

我觉得,也许这正是Oracle sql引擎智能的表现。 PS:我不是楼上那个老兄!

chinaunix网友2009-07-06 12:59:23

我觉得这不是Bug