我的存储过程有一个奇怪的问题。我编写了一个在 MySQL 控制台和 MySQL GUI 工具上正确运行的存储过程:SqlYog。但它不适用于 PHP 代码。是否有任何特定设置可以在 PHP 中运行 SP?在我的存储过程中,我使用了 MySQL 会话变量。
我的环境:Windows 10 x64, PHP 7.3, MariaDB: 10.4.13-MariaDB
。
我附上了我的 SP 代码的一部分。
问题块如下:
SET @p_number = v_number;
SET @p_quantitySum = v_stock_net;
EXECUTE stmt1 USING @p_number, @p_quantitySum;
这是一个准备好的声明。
SET @sql_query = "
SELECT
@b_id := id,
@b_price := IFNULL(price, 0),
@b_ib_seq := seq,
@b_ib_qty_accumulated := IFNULL(quantitySum, 0)
FROM
(SELECT
ib.*,
(@seq := @seq + 1) AS seq,
@sum := (@sum + quantity) AS quantitySum
FROM
buying ib
INNER JOIN
(SELECT
@sum := 0,
@seq := 0) b
WHERE ib.number = ?
ORDER BY ib.date DESC) ib
WHERE quantitySum > ?
LIMIT 1 ;
" ;
PREPARE stmt1 FROM @sql_query ;
PHP 调用:mysqli_query($this->conn, "CALL sp_update_daily_buying('2021-01-21');")
我在循环中运行这个选择。执行后EXECUTE stmt1 USING @p_number, @p_quantitySum;
,我的存储过程在第三次执行后结束。那是在循环中,2次都可以,但是在第3次执行之后,SP就结束了。
正如我上面提到的,在 GUI 工具和 MySQL 控制台中,它可以正常工作(循环正确结束)。
有什么具体的设置吗?
提前致谢!