gpt4 book ai didi

mysql - 在 MySQL 存储过程中创建的临时表的范围

转载 作者:IT老高 更新时间:2023-10-29 00:03:53 27 4
gpt4 key购买 nike

问题撤回!当我拼写正确时,问题就消失了!

我有一个创建临时表的 MySQL 存储过程。当我从 mysql 提示符下调用该过程时,它似乎运行成功,但如果我随后从临时表中选择 COUNT(*),我会收到一条错误消息,指出该表不存在。

当存储过程结束时,在存储过程中创建的临时表是否不复存在?

mysql> delimiter //
mysql> drop procedure if exists sp_temp_reciepts//
mysql> create procedure sp_temp_receipts ()
begin
drop temporary table if exists receipts;
create temporary table receipts
( ... snip ...
);
insert into receipts
select ... snip ...
end//
mysql> delimiter ;
mysql> call sp_temp_reciepts();
Query OK, 46903 rows affected, 1 warning (2.15 sec)
mysql> select count(*) from receipts;
ERROR 1146 (42S02): Table 'receipts' doesn't exist

最佳答案

这个问题已有一年多了。它值得一个答案。开始了:

我今天刚在 DBA StackExchange 中看到这个问题:How long will a temporary MEMORY table persist if I don't drop it (MySQL) .我刚刚回答了。部分我是这样说的:

根据the Book

kdsjx

第 5 章有一个副标题将结果集返回到另一个存储过程

它在第 117 页的第 2 段中说:

Unfortunately, the only way to pass a result set from one stored procedure to another is to pass the results via a temporary table. This is an awkward solution b, and -- because the temporary table has scope throughout the entire session -- it creates many of the same maintainability issues raised by the use of global variables. but if one stored program needs to supply another stored program with results, then a temporary table can be the best solution.

虽然这个问题因为表拼写错误而被放弃,但是这个观点需要所有调用MySQL存储过程并需要他们的数据可用的人表达和学习。

关于mysql - 在 MySQL 存储过程中创建的临时表的范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14203353/

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