当前位置:首页 » 服务存储 » 同一个存储过程能同时执行吗
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

同一个存储过程能同时执行吗

发布时间: 2022-08-04 08:01:59

⑴ ORACLE多人同时执行一条存储过程,会不会有影响

你这样属于2个事务在操作一个表。如果表中有唯一键,会有一个过程失败的。如果没有唯一键,会写入20000条记录。但是如果存储过程里操作的表是动态传进去的。如果表名不同,同时执行多个这个存储过程是没有影响的。

⑵ 求助多个用户同时调用同一个存储过程

可以从这几个方面考虑1、限制会话数量,防止多个会话出现2、在多个会话中调用存储过程前增加检测调用状态的功能3、在存储过程pro中增加当前运行状态的功能,防止重复运行4、在结果表增加唯一索引,防止出现重复记录解决问题的途径总是很多,需要程序开发人员和DBA共同沟通解决。

⑶ 存储过程如何实现存储过程的并发执行

这个问题一般是数据锁造成的,INSERT的时候一般不会遇到这种问题,你在A或者B存储过程中查看一下,一定有UPDATE语句或者 SELECT FOR UPDATE语句,两个并发的请求同时锁一条记录就会造成一条成功另一条失败。
不过按照你的描述最大的可能性是另外一种情况,就是两次INSERT插入的数据某个字段是相同的值,好死不死的,这个相同值的字段又设置了唯一索引或者约束,那么当第一条记录插入成功后第二条记录就会必然失败回滚。

⑷ 存储过程并发,存储过程在同一个时间里面执行了多次,导致数据多次修改

在调用存储过程的程序中加上线程同步控制,避免同时调用

java程序示例

=newObject();
publicvoidpay(){
synchronized(payLock){
//TODO下方写调用存粹过程的调用
}
}

⑸ 一个存储过程可以调用两个存储过程吗

直接调用就可以了。举个例子把 B 存储过程调用A 存储过程。
PROCEDURE A (p_1 in number,p_2 out number)

is
v_1 number;
begin
V_1:=p_1;
p_2:=v_1;
end A;

(1)如果A 与B同在一个package里面的话。那么 B里面直接可以调用A
PS:如果A,B在同一个Package 中无法调用的话,那么很可能是A,B在Spec里没有声明。一个package包含Spec 和Body,两层。不能调用很可能没有声明。声明后应该ok!

PROCEDURE B(p_1 in number)
is
v_result number;

begin

v_result =A(p_1);

end B;
其中v_result就是调用A的结果,A的返回值。

(2)如果A与B不在同一个package的话
那么B在调用A 的时候,需要加上pkg的名字
比如:A 存储过程在pkg :xxom_test_pkg 中

PROCEDURE B(p_1 in number)
is
v_result number;
begin
v_result = xxom_test_pkg .A(p_1);

end B;

----------------------------------------------------------
以上简单介绍了存储过程的调用。
希望对你有帮助

⑹ 如何让oracle并发执行同一个存储过程呢(参

可以利用java或其它开发工具编写多线程来执行存储过程,这样你可以完成你的复杂控制。

⑺ 能不能在一个存储过程中并行执行sql

能不能在一个存储过程中并行执行sql
存储过程本来就是多条语句
你也可以通过存储过程调用其他存储过程execute ("exec b存储过程")提交回答

⑻ SQL2005 同一个存储过程可以由多程序同时调用并根根不同程序调用返回不同结果吗

都是传到存储过程里面不同参数!返回不同结果!
存储过程支持并发的!
CREATE PROCEDURE [dbo].[aa](@i int) AS
begin
select @i*2
end
GO