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