日期:2014-05-17  浏览次数:20821 次

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

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

Lock xxx in Exclusive mode
------解决方案--------------------
SELECT * FROM MAN WHERE SEX='男' for update
------解决方案--------------------
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 ;