在pl sql中,执行  select * from 表名 for update 语句对该表数据进行更新时,报错ora-01732。
我用下面语句对当前用户进行锁表的查询,结果是没有表被锁。
select
b.SID,
b.SERIAL#,
b.USERNAME,
b.MACHINE,
c.object_name
from v$lock a, v$session b , dba_objects c
where a.SID = b.SID
and a.ID1 = c.object_id
and b.USERNAME = 'JSUSER'
但是为什么该表的数据无法更新而报上述错误呢,求助,谢谢

解决方案 »

  1.   

    不要按用户名查,按object_name查
    select 
    b.SID, 
    b.SERIAL#, 
    b.USERNAME, 
    b.MACHINE, 
    c.object_name 
    from   v$lock   a,   v$session   b   ,   dba_objects   c 
    where   a.SID   =   b.SID 
    and   a.ID1   =   c.object_id 
    and   c.object_name='表名' 
      

  2.   

    恩  结果同样是此表没锁,但是仍然报ora-01732的错误啊 
      

  3.   

    恩 谢谢,同样没有发现锁表的情况。不过仍然有ora-01732的错误, 等待求解
      

  4.   

    ora-01732不是锁的问题,而以由于通过试图更新基表的问题
    你的表名可能不是表而是view
      

  5.   

    嗯?select * from table_name for update不就是
    手工强制加锁吗?以独占方式打开吗?在事务没有结束前,你的锁会放开吗?应该不会吧。
      

  6.   

    原因是别人建了物化视图了。分给ruihuahan 啦,谢谢回帖的朋友们