ORACLE锁定多行的操作  我在操作前锁定 性别为男的所有列,在存储过程中不知怎么写
 我用 SELECT SEX INTO SEX1 FROM MAN WHERE SEX='男' FOR UPDATE NOWAIT; 
说结果为多行错误 用 SELECT COUNT(*) 说不让此操作

解决方案 »

  1.   

    1.返回结果多行,存储中当然不能SELECT SEX INTO SEX1 FROM MAN WHERE SEX='男' 这么写。
    2. SELECT COUNT(*)  和 for update 是不能一起用的
    3.你在操作前锁定表是想做什么操作?
      

  2.   

    直接锁全表,加TX锁的表级别锁Lock xxx in Exclusive mode
      

  3.   

    SELECT * FROM MAN WHERE SEX='男' for update
      

  4.   

    create or replace procedure tt is
      cursor cur is SELECT SEX  FROM MAN WHERE SEX='男' FOR UPDATE NOWAIT;  
    begin
      for rec in cur loop 
        -- rec.SEX 
      end loop ;
    end ;