gpt4 book ai didi

mysql - MySQL 中的级联存储过程

转载 作者:行者123 更新时间:2023-11-29 14:38:43 24 4
gpt4 key购买 nike

问题比较简单。

是否可以将 MySQL 中的一个过程调用到另一个过程中?

示例:

创建了两个过程:proc1 和 proc2

在 proc1 中,我调用 proc 2。因此:

BEGIN

IF ( CALL ConsultConsoleAvailableTime(`StartTime`, `PlusTime` ) IS NULL ) THEN
SELECT 'error';
END IF;

END;

这可能吗?如何?没有在这里工作过。 :D

编辑1:

1318 - PROCEDURE sistemajogosxbox.ConsultConsoleAvailableTime 的参数数量不正确;预期 3,得到 2

编辑2:

1172 - 结果包含多行

现在呢?

最佳答案

只是为了说明在另一种存储过程中使用存储过程的一种方法:

DELIMITER //
CREATE PROCEDURE setOutputParameter (
OUT OutputParameter VARCHAR(20)
)
BEGIN

SELECT 'output' INTO OutputParameter;

END//
DELIMITER ;

DELIMITER //
CREATE PROCEDURE useOutputParameter ()
BEGIN
CALL setOutputParameter(@tmpOutputParameter);

IF @tmpOutputParameter = 'output'
THEN SELECT 'string: output was returned' AS res;
END IF;

END//
DELIMITER ;

过程setOutputParameter为其out参数设置一个值,然后该值被创建为过程setOutputParameter的占位符(并进入变量:@tmpOutputParameter,然后在 IF..THEN.. 语句中检查。

同样,这可能不是最简单的示例,甚至对于过程来说可能有点过分(使用函数作为可能的替代方案),并且还有其他方法可以返回要在存储过程中使用的值,这些值旨在利用其中有一个存储过程。

[编辑]基于帖子评论:

存储过程中的 INOUTOUT 参数(仅在存储过程中可用,不适用于函数)允许存储过程的调用者通过 CALLstoredprocedurename .. 命令将用户定义的变量传递到被调用过程的 out 参数位置 - 同一过程在该位置运行并向其传递一个值。执行被调用过程后,传递到用户定义变量中的 out 值变得可用。在上面的示例中,存储过程 setOutputParameter 中的 out 参数 OutputParameter 需要在调用时向其传递一个变量,因为存储过程过程setOutputParameter将向其传递一个值。因此,实际上,一旦存储过程 useOutputParameter 中的代码通过 CALL setOutputParameter(@tmpOutputParameter); 调用 if,它传递的变量将充当输出参数:@tmpOutputParameter 现在将包含字符串值 output,过程 useOutputParameter 中的其余代码可以使用该字符串值...

在此处了解更多信息:http://dev.mysql.com/doc/refman/5.0/en/create-procedure.html

关于mysql - MySQL 中的级联存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8447450/

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