2011-08-16 71 views
0

我有一個oracle窗體,其中數據塊的鎖定過程屬性被設置爲調用過程'lock_fn'。 程序「lock_fn」看起來象下面這樣:oracle窗體 - 鎖定過程屬性

procedure lock_fn(outp IN OUT out_tab) IS 
l_first BINARY_INTEGER := outp.first; 
l_last BINARY_INTEGER := outp.last; 
l_id a.id%type; 
BEGIN 
    for i in l_first .. l_last loop 
     select id 
     into l_id 
     from a 
     where a.id=outp(i).id; 
    end loop; 
END lock_fnl; 

我的問題是,只會選擇IDS保證行級鎖?任何幫助將是最受歡迎的。

編輯: 產生了自動的數據塊的鎖定程序觸發的代碼看起來像下面:

DECLARE 
bk_data FRMPKG.OUT_TAB; 
BEGIN 
PLSQL_TABLE.POPULATE_TABLE(bk_data, 'LOCK_FN', PLSQL_TABLE.LOCK_RECORDS); 
FRMPKG.LOCK_FN(bk_data); 
END; 

回答

3

只會選擇IDS保證行級鎖?

不需要,你需要一個SELECT FOR UPDATE(但是然後選擇一個單列就足夠了)。

+0

感謝您的快速回復。有關代碼是否會在鎖定方面做得很好?我發現它是一種生產形式。 – digdug

+1

也許我錯過了一些東西,但它確實看起來像沒有任何操作。只是選擇不會獲得任何鎖定,因此既不會阻止其他人也不會被任何其他人阻止。 – Thilo