Joh*_*nes 17 mysql select stored-procedures stored-functions
我一直在寻找最后一小时左右,并没有找到这个看似简单的问题的确定答案:
如何调用存储的MYSQL函数/过程并在其他SELECT查询中使用其输出?
虽然这显然不起作用,但这是我想要的东西:
SELECT P.`id` FROM (CALL test_proc()) AS P
Run Code Online (Sandbox Code Playgroud)
其中test_proc()的定义如下:
DROP PROCEDURE IF EXISTS test_proc;
DELIMITER ;;
CREATE PROCEDURE test_proc()
BEGIN
SELECT * FROM `table`;
END;;
DELIMITER ;
Run Code Online (Sandbox Code Playgroud)
仅作为一个例子.我也可以使用存储函数.
Mic*_*bot 20
这不能直接完成,因为存储过程中无界选择的输出是发送到客户端的结果集,但技术上不是表.
解决方法是让proc在为您创建表后将数据放入临时表中.此过程完成后,此表仅适用于您的连接.如果其他人同时运行proc并且任何其他连接都不可见,则不会导致冲突.
将此添加到过程:
DROP TEMPORARY TABLE IF EXISTS foo;
CREATE TEMPORARY TABLE foo SELECT ... your existing select query here ...;
Run Code Online (Sandbox Code Playgroud)
当你的程序结束时,SELECT * FROM foo;会给你你从proc得到的东西.您可以像任何桌子一样加入它.
当你完成后,丢弃它,或者当你断开连接时它会自行消失.如果再次运行proc,它将被删除并重新创建.
| 归档时间: |
|
| 查看次数: |
21091 次 |
| 最近记录: |