我在Oracle10.2.0.4版本中使用以下语句锁表:
lock table tbl_lock in exclusive mode nowait  正常加个时间
lock table tbl_lock in exclusive mode wait 5
就会报错 ORA-00933:SqlCommand not properly ended;但是在Oracle11G中以上2个语句都可以顺利运行,这是什么道理?难道oracle10g只允许nowait的写法?我查了lock的语法,从来没有提到过还有版本限制。

解决方案 »

  1.   

    提示SQL没正确结束,如果语句和执行工具都一样,那应该是版本的问题了
      

  2.   

    沿用别人的话:
    在Oracle 11前的版本中,当发出一个LOCK TABLE命令时,如果正好有其他session对这个表持有了锁,这时会无限期的等待或是直接不等待(NOWAIT clause )返回一个错误。在11g中,新增的wait option允许一个lock table操作等待一段时间去获取需要的lock直到timeout返回错误,如果在wait的时间段内获得了需要的lock,命令将成功执行。可参考博文
    http://blog.itpub.net/post/11835/474251/