gpt4 book ai didi

MySQL@variable在prepare语句并发问题

转载 作者:行者123 更新时间:2023-11-29 22:51:54 25 4
gpt4 key购买 nike

我正在尝试在mysql中编写一个存储过程,它将输入变量作为标准来选择要计算的表。然后会根据该值使用react。

例如

PROCEDURE `Function`(IN table_name varchar(10))
BEGIN
SET @c2 = CONCAT ('Select count(*) into @count From ',table_name);
PREPARE stmt from @c2;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

IF @count > 0 Then
doing something
Else
do something else
End If

END

据我了解,@count 值存储在 session 中而不是本地。准备stmt需要使用@var才能访问存储过程中其他位置的值。

现在我有一个问题,当我有多个执行同时调用此存储过程时会导致并发问题。

有没有办法解决并发问题?或者无需 @var 即可运行动态查询的替代方法?

谢谢你

最佳答案

存储过程和函数之间有很大的区别。所以请不要命名您的过程函数。

除此之外,你没有问题。不存在并发问题。就像你说的,用户定义的变量(带有@的变量)具有 session 范围。要“同时”运行它,您必须在另一个 session 中执行此操作,并且变量将具有另一个作用域。

关于MySQL@variable在prepare语句并发问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28870558/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com