我最近从MSSQL转到了MySQL。
我想使用MySQL 5.5存储例程中的表变量(或等效变量)来填充联机报告的数据集。
在MS SQL中,我会这样做
...
...
DECLARE @tblName TABLE
WHILE <condition>
BEGIN
Insert Row based on iteration value
END
...
...据我所知,我不能在MySQL中声明表变量(如果我错了,请纠正我)如何在MySQL存储过程中实现上述逻辑?
发布于 2011-08-29 14:40:58
您可以创建一个表或临时表,并用所需的数据填充它。
发布于 2014-12-29 11:35:41
您正确地理解了这一限制。http://dev.mysql.com/doc/refman/5.5/en/user-variables.html用户手册清楚地指出,用户定义的变量不能引用表
用户变量旨在提供数据值。它们不能直接在SQL语句中用作标识符或标识符的一部分,例如在需要表或数据库名称的上下文中,或用作保留字(如SELECT )。
发布于 2021-10-17 09:13:20
创建临时表tmp ( id int unsigned not null,name varchar(32) not null ) engine=memory;--如果需要,更改引擎类型,例如myisam/innodb
插入到tmp (id,name) select id,name from foo...;
--做更多的工作...
select * from tmp order by id;
如果存在临时表,则删除临时表;
https://stackoverflow.com/questions/7226658
复制相似问题