MySQL中的级联存储过程

MySQL中的级联存储过程,mysql,stored-procedures,Mysql,Stored Procedures,问题相对简单 可以将MySQL中的一个过程调用到另一个过程中吗 例如: 创建了两个过程:proc1和proc2 在proc1中,我调用proc2。 因此: 可能吗?怎么用?没有在这里工作,没有D 编辑1: 1318-过程sistemajogosxbox.ConsultConsolleAvailableTime的参数数量不正确;期望3,得到2 编辑2: 1172-结果由多行组成 现在,您可以从一个存储过程调用另一个存储过程。我以前做过 我认为您的示例是不可靠的,因为proc2()不像函数那样具有返

问题相对简单

可以将MySQL中的一个过程调用到另一个过程中吗

例如:

创建了两个过程:proc1和proc2

在proc1中,我调用proc2。 因此:

可能吗?怎么用?没有在这里工作,没有D

编辑1:

1318-过程sistemajogosxbox.ConsultConsolleAvailableTime的参数数量不正确;期望3,得到2

编辑2:

1172-结果由多行组成


现在,您可以从一个存储过程调用另一个存储过程。我以前做过


我认为您的示例是不可靠的,因为
proc2()
不像函数那样具有返回值。也许您需要将
proc2()
变成一个函数而不是一个过程。

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

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
中的占位符(并进入变量:
@tmpoutParameter
,然后在
IF..
语句中进行检查

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

[编辑]根据帖子评论:

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


此处阅读更多内容:

MySQL存储过程中的输出参数是一个参数,您可以从存储过程中向其传递一个值,然后在同一存储过程运行后可以访问该参数。在上述情况下..请稍候,让我修改我的帖子..对于
Edit1
您的过程
ConsultConsolleAvailableTime
来说三个参数,您只提供了两个:
StartTime
PlusTime
他们已经满意了。我不知道为什么会出现此消息。我在这里犯了一个小错误。我正在修复。我相信您是对的,您的回答也是。我认为“限制1”可以解决我的问题。对吗?很可能。只获取一行和一列,看看有什么问题佩恩斯。。
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 ;