当前位置:首页 » 服务存储 » 如何并发调存储过程
扩展阅读
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;如果没有参数,括号里一堆就不用写了,然后执行即可。