gpt4 book ai didi

mysql - 如何使用存储的 MYSQL 过程中的表输出

转载 作者:IT老高 更新时间:2023-10-28 23:58:03 25 4
gpt4 key购买 nike

我一直在寻找最后一个小时左右,并没有找到这个看似简单的问题的结论性答案:

如何调用存储的 MYSQL 函数/过程并在进一步的 SELECT 查询中使用其输出?


虽然这显然行不通,但这是我想要的东西:

SELECT P.`id` FROM (CALL test_proc()) AS P

其中 test_proc() 定义为:

DROP PROCEDURE IF EXISTS test_proc;
DELIMITER ;;
CREATE PROCEDURE test_proc()
BEGIN
SELECT * FROM `table`;
END;;
DELIMITER ;

举个例子。我也可以使用存储函数。

最佳答案

这不能直接完成,因为存储过程中无界选择的输出是发送到客户端的结果集,但从技术上讲不是表。

解决方法是让 proc 在为您创建表后将数据放入临时表中。此表仅在过程完成后对您的连接可用。如果其他人同时运行 proc 并且不会对任何其他连接可见,则不会导致冲突。

将此添加到程序中:

DROP TEMPORARY TABLE IF EXISTS foo;
CREATE TEMPORARY TABLE foo SELECT ... your existing select query here ...;

当您的程序完成时,SELECT * FROM foo; 将为您提供您从 proc 中获得的内容。你可以像任何 table 一样加入它。

完成后,请将其放下,否则当您断开连接时它会自行消失。如果再次运行 proc,它将被删除并重新创建。

关于mysql - 如何使用存储的 MYSQL 过程中的表输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17944871/

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