返回信息流set @par = "pet";
select * from @par;
这样总是报错,可以把普通变量当做字段名使用,怎么才能把普通变量当做表名使用啊?是在sql语句中,非存储过程中
这是一条镜像帖。来源:北邮人论坛 / database / #5943同步于 2011/9/13
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Database机器人发帖
如何把普通变量当做表名使用?
lic
2011/9/13镜像同步4 回复
订阅后,新回复会通过你的通知中心匿名送达。
4 条回复
询问SQL语句的问题也最好说明你正在或想在何种数据库后台产品(如MySQL, SQL Server,
Access, Oracle, Sybase, DB2等)中运行该SQL语句。由于每种产品支持的SQL在细节上是
不同的,因此不指明这一点可能会让人无法作答。
MySQL中
mysql> set @i='INFORMATION_SCHEMA.TABLES';
Query OK, 0 rows affected (0.00 sec)
mysql> set @sqlstr=concat('SELECT table_name FROM ', @i);
Query OK, 0 rows affected (0.00 sec)
mysql> prepare ko from @sqlstr;
Query OK, 0 rows affected (0.00 sec)
Statement prepared
mysql> execute ko;
+----------------------------------------------+
| table_name |
+----------------------------------------------+
| CHARACTER_SETS |
| COLLATIONS |
| COLLATION_CHARACTER_SET_APPLICABILITY |
| COLUMNS |
| COLUMN_PRIVILEGES |
| ENGINES |
| EVENTS |
| FILES |
| GLOBAL_STATUS
。。。。。。。。。。。。。。
其实如果用存储过程或外部C程序等的话可以更灵活,如可将查询结果作为一系列表名使用,本版之前有类似的帖
【 在 lic (lic) 的大作中提到: 】
: set @par = "pet";
: select * from @par;
: 这样总是报错,可以把普通变量当做字段名使用,怎么才能把普通变量当做表名使用啊?是在sql语句中,非存储过程中
: ...................