MySQL 5.5中的用户定义表变量?

MySQL 5.5中的用户定义表变量?,mysql,stored-procedures,routines,Mysql,Stored Procedures,Routines,我最近从MSSQL迁移到MySQL 我想在MySQL 5.5存储例程中使用一个表变量(或等效变量),为在线报告填充数据集 在MS SQL中,我会这样做 ... ... DECLARE @tblName TABLE WHILE <condition> BEGIN Insert Row based on iteration value END ... ... 。。。 ... 声明@tblName表 虽然 开始 基于迭代值插入行 结束 ... ... 据我所知,我不能在MySQ

我最近从MSSQL迁移到MySQL

我想在MySQL 5.5存储例程中使用一个表变量(或等效变量),为在线报告填充数据集

在MS SQL中,我会这样做

...
...
DECLARE @tblName TABLE
WHILE <condition>
BEGIN
    Insert Row based on iteration value
END
...
...
。。。
...
声明@tblName表
虽然
开始
基于迭代值插入行
结束
...
...

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

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


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


我想它涵盖了这一点。另外,这可能会有帮助。

我想会有帮助的。此外,这可能会有所帮助。

您正确理解了该限制。MySQL用户手册明确指出,用户定义的变量不能引用表:

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


你正确地理解了这个限制。MySQL用户手册明确指出,用户定义的变量不能引用表:

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


谢谢,我会尝试一下,然后回来。这确实是我想要的:-)谢谢!公平地说,OP可能不知道这一点,但创建表或临时表与MS SQL中的
declare@tblName table
不同。后者与临时表有一些细微的区别:谢谢,我会尝试一下,然后回来。这确实是我想要的:-)谢谢!公平地说,OP可能不知道这一点,但创建表或临时表与MS SQL中的
declare@tblName table
不同。后者与临时表有一些细微的区别: