gpt4 book ai didi

mysql - 我如何使用选择中的变量来调用存储过程?

转载 作者:行者123 更新时间:2023-11-30 01:36:05 26 4
gpt4 key购买 nike

我的问题是这段代码。

DELIMITER $$

DROP PROCEDURE IF EXISTS agregar_abono$$
CREATE PROCEDURE agregar_abono(IN pid_cliente BIGINT, IN pfecha_abono DATE, IN pmonto_abono FLOAT)
BEGIN
DECLARE @idabono BIGINT;

-- OTHER CODE ...

SELECT id_abono AS idabono FROM abono WHERE fk_cliente = pid_cliente ORDER BY id_abono DESC LIMIT 1;

SELECT CONCAT('>', idabono);


CALL cobrar_abono(pid_cliente, vid_abono);

END $$

两次SELECT返回的过程:

idabono = 52                  --> good! (in the first select)
CONCAT('>', idabono) = null ---> what??

我不知道,因为没有将结果存储在这个变量中以便在存储过程中使用。我使用 AS 来存储变量。

要调用的存储过程的 header 是:

CREATE PROCEDURE cobrar_abono(IN pid_cliente BIGINT, IN pid_abono BIGINT)

最佳答案

你在找这个吗?

...
DECLARE idabono BIGINT;
-- OTHER CODE ...
SET idabono = (SELECT id_abono
FROM abono
WHERE fk_cliente = pid_cliente
ORDER BY id_abono DESC
LIMIT 1);

SELECT 语句本身可能可以替换为

SET idabono = (SELECT MAX(id_abono)
FROM abono
WHERE fk_cliente = pid_cliente);

关于mysql - 我如何使用选择中的变量来调用存储过程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16879809/

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