oracle里有没有其他方法替代游标

存储过程内使用了游标遍历数据,需要对数据进行更新。
当多用户同时请求时,多个session的游标查询的数据可能重复,游标锁定了数据,
第一个用户 更新了数据,
后面用户可能会覆盖前一个用户更新的数据。
需要频繁查询数据,考虑到性能方面,希望用存储过程完成数据处理。
有没有其他方法替代游标呢?

和游标没有关系了,看个例子
[code="sql"]SELECT *
FROM aa t
WHERE num <= 40
ORDER BY num DESC[/code]
结果:
1 40
1 30
2 10
[code="sql"]SELECT *
FROM aa t
WHERE num <= 30
ORDER BY num DESC
FOR UPDATE SKIP LOCKED[/code]

结果:
1 30
2 10
[code="sql"]SELECT *
FROM aa t
WHERE num <= 40
ORDER BY num DESC
FOR UPDATE SKIP LOCKED[/code]
结果:
1 40

没太明白,既然游标锁定了数据,一个用户更新,其他用户还能更新吗?

你的问题是性能问题呢,还是不允许其他用户重复更新数据?

oracle里面存储过程是异步的吗?
应该是同步的吧!

查询中使用 update skip locked,当其他用户查询被锁的记录的时候,会跳过这条记录。