2

我最近从 MSSQL 搬到了 MySQL。

我想在 MySQL 5.5 存储例程中使用表变量(或等效项)来填充在线报告的数据集。

在 MS SQL 中,我会这样做

...
...
DECLARE @tblName TABLE
WHILE <condition>
BEGIN
    Insert Row based on iteration value
END
...
...

据我了解,我无法在 MySQL 中声明表变量(如果我错了,请纠正我)如何在 MySQL 存储过程中实现上述逻辑?

4

4 回答 4

1

您可以创建一个表或临时表并用您需要的数据填充它。

创建表语法

于 2011-08-29T06:40:58.163 回答
0

您正确理解了该限制。MySQL用户手册明确指出用户定义的变量不能引用表: http ://dev.mysql.com/doc/refman/5.5/en/user-variables.html

用户变量旨在提供数据值。它们不能直接在 SQL 语句中用作标识符或标识符的一部分,例如在需要表或数据库名称的上下文中,或用作保留字(如 SELECT)。

于 2014-12-29T03:35:40.880 回答
0

创建临时表 tmp ( id int unsigned not null, name varchar(32) not null ) engine=memory; -- 如果需要,更改引擎类型,例如 myisam/innodb

insert into tmp (id, name) select id, name from foo... ;

——做更多的工作...

select * from tmp order by id;

如果存在 tmp,则删除临时表;

于 2021-10-17T09:13:19.977 回答
-1

我认为涵盖了它。此外,可能会有所帮助。

于 2011-08-29T07:48:22.387 回答