當前位置:首頁 » 服務存儲 » 如何並發調存儲過程
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

如何並發調存儲過程

發布時間: 2022-08-27 05:10:34

A. 並發調用oracle存儲過程

不知道你的業務邏輯,只能是猜測
(1)你上面寫的--記錄已存在,直接返回入庫成功,在哪?不是還要執行下面的刪除么?
(2)因為不知道你的業務邏輯,所以個人猜測可能出在刪除上,如果有一個sellerid = v_sellerid and m.professtype = v_professtype and m.plattype = v_plattype三者一樣的,在同一天請求了兩次,那麼你只能保留一條,以為另外一條被刪除了,但是也是執行成功的,因為他是刪除了一條,添加了一條。
(3)如果你有部分沒寫上,就是那個直接返回入庫成功那塊,那麼問題也可能出在那裡,因為這里已經反映成功了,所以你收到的回復肯定也是成功啊。

B. 存儲過程並發,存儲過程在同一個時間裡面執行了多次,導致數據多次修改

在調用存儲過程的程序中加上線程同步控制,避免同時調用

java程序示例

=newObject();
publicvoidpay(){
synchronized(payLock){
//TODO下方寫調用存粹過程的調用
}
}

C. Oracle存儲過程並發問題

1.設立主鍵。根據唯一性資料庫自動判別。
2.笨的方法:建議採用信號量。
舉例如下:
create signal_flag (signal number(1));insert into signal_flag values(1);
在每次查詢表有無記錄前,加入語句
select signal from signal_flag where signal=1 for update;
select count(1) int var_cnt from tab1 ;
if var_cnt =0 then insert.....
endif;
commit;

D. 如何讓oracle並發執行同一個存儲過程呢(參

可以利用java或其它開發工具編寫多線程來執行存儲過程,這樣你可以完成你的復雜控制。

E. 如何在存儲過程中並行調度另外幾個存儲過程

不知道你的具體情況, 只能猜了. 如果存儲過程B有參數, 在存儲過程A里調用B, 用參數過濾一下B的結果集, 然後放到一個臨時表(或者類似結構的東東)里, 最後在A里直接SELECT這個臨時表的數據即可. 如果B沒有參數, 就在SELECT里過濾一下.

F. 存儲過程如何實現存儲過程的並發執行

這個問題一般是數據鎖造成的,INSERT的時候一般不會遇到這種問題,你在A或者B存儲過程中查看一下,一定有UPDATE語句或者 SELECT FOR UPDATE語句,兩個並發的請求同時鎖一條記錄就會造成一條成功另一條失敗。
不過按照你的描述最大的可能性是另外一種情況,就是兩次INSERT插入的數據某個欄位是相同的值,好死不死的,這個相同值的欄位又設置了唯一索引或者約束,那麼當第一條記錄插入成功後第二條記錄就會必然失敗回滾。

G. sql存儲過程如何調用存儲過程

1、首先先創建一個存儲過程,代碼如圖,存儲過程主要的功能是為表JingYan插入新的數據。

H. PL/SQL如何實現並行執行存儲過程

實現的話,這個得看你需求才能寫,一般語法也不是特別麻煩,多學學循環,動態sql的基本可以應付一切了。
執行的話,一般開個sql窗口
begin
存儲過程名(參數1,參數2……);
end;如果沒有參數,括弧里一堆就不用寫了,然後執行即可。