先上代碼:
select * from FP_FSXX where ROWID IN (select rowid from (select * from FP_FSXX where fp_zl='P2' and fpzt='0' and NSRSBH='110101201703090' order by SFRQ,FP_QS_HM) where rownum=1) for update
實際想解決一個對于結果集先排序,再取第一行并將其上鎖的問題。
代碼陳述句可以實作此需求,但是開銷較大。
請問各位大神針對這種需求有沒有更好的解決辦法,或者對此sql陳述句有沒有優化的空間?
資料庫白癡跪謝。
uj5u.com熱心網友回復:
SELECT *FROM (SELECT *
FROM FP_FSXX
WHERE FP_ZL = 'P2'
AND FPZT = '0'
AND NSRSBH = '110101201703090'
ORDER BY SFRQ
,FP_QS_HM)
WHERE ROWNUM = 1
FOR UPDATE
看下這樣行不。
感覺你的rowid用了好多遍。。
uj5u.com熱心網友回復:
這樣不行,for update 不能用到視圖上。。
uj5u.com熱心網友回復:
你鎖那一行是要干嘛先。如果不一定要鎖,直接查出來,在pl里面開鎖就好啦uj5u.com熱心網友回復:
找出主鍵值,以主鍵值作為條件,按一般查詢形式檢索資料。select empno, ename, job
from emp
where empno = (select empno
from (select row_number() over(order by mgr) rn, empno, ename, job
from emp)
where rn = 1)
for update
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/94905.html
標籤:開發
上一篇:ORACLE資料庫和監聽分離求助
