oracle 儲存過程 行鎖

2021-08-30 14:43:54 字數 638 閱讀 8533

問題:1.要求通過儲存過程實現程式執行的併發控制。

2.儲存過程乙個輸入引數乙個輸出引數,輸入要執行的程式名稱,判斷該程式是否在執行輸出引數返回程式狀態

3.解決問題:當兩個使用者同時訪問同一程式時,都檢索到該程式未執行,同時執行,併發失效。

create or replace procedure (prog_name_in varchar2(50),run_flag_out out varchar2(50))

isv_run_flag varchar2(10);

begin

select run_flag into v_run_flag from tb_prog_stauts

where prog_name = prog_name_in for update ;

if(v_run_flag = 'y') then

run_flag_out := '程式執行中';

end if;

if(v_run_flag ='n') then

fun_flag_out := '程式可以執行';

end if;

exception

when others then

rollback;

commit;

end;

mysql 儲存過程 行鎖 mysql行鎖和表鎖

在呼叫儲存過程中,就會涉及到表鎖,行鎖這一概念 所謂區別 有索引的時候就是行鎖,沒有索引的時候就是表索。innodb 的行鎖是在有索引的情況下,沒有索引的表是鎖定全表的.表鎖演示 無索引 session1 mysql set autocommit 0 mysql select from innodb...

ORACLE儲存過程被鎖

1.檢視是哪乙個儲存過程被鎖住 查v db object cache檢視 select from v db object cache where owner 過程的所屬使用者 and locks 0 2.檢視是哪乙個sid,通過sid可以知道是哪乙個session 查v access檢視 selec...

Oracle儲存過程中使用行鎖的示例

以前對oracle鎖只概念上的一點點了解,沒有認真考慮或使用過。直到在開發過程中遇到了由於沒有使用鎖而導致的併發問題,才對此重視起來。舉個例子來說明我遇到的問題。乙個入庫單錶 t rkd 每一條記錄對應著一條入庫資訊,還有個一對多的關聯表來記錄此入庫單的明細資訊。我使用t rkd表中乙個欄位來標識這...