开发者社区> 问答> 正文

mysql 变量问题?报错

1.有一个数据库是test_num_base,其中有一个test表.

我想通过变量的方式获取test的数据.

select * from test_num_base.test;

使用变量:

set @A=test_num_base;
但是再次访问使用: select * from @A.test;
报错:ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '@A ' at line 1

如果使用拼接的方法进行设置:

set @B=concat('test_num_base.'+'test');
访问: select * from @B;
还是报错.
求解释如何进行更正,小弟不甚感谢!
关于数据库变量的使用.

展开
收起
爱吃鱼的程序员 2020-06-08 14:11:46 517 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    每一次连接都是新进程, 你生成的变量被销毁了。 

    类似php

    这些变量都存在于一次连接中,因为都是局部变量.如果是在第二次连接中,这些变量是不存在的.

    多看书,嗯。

    求指教

    @A定义的是什么类型,正常应该是游标,用游标不能用select,用循环遍历

    @B拼接出来是个字符串,你查询字符串想查出什么?

    数据库对象和字符串对象分开;在数据库编程里面字符串就是字符串,数据库对象就是数据库对象,你可以给数据库对象重命名,但不能认为from后面跟一个字符串是合理的@A变量定义的是一个数据库的名称.在使用set的时候不必指定类型吧,然后通过@A访问到该数据库中表的数据.@B拼接出来是该数据库中的表(类似于mysql.user),在通过该字符串,访问到该库中表的内容.我这中想法,是不是存在某种问题.
    2020-06-08 14:12:04
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
搭建电商项目架构连接MySQL 立即下载
搭建4层电商项目架构,实战连接MySQL 立即下载
PolarDB MySQL引擎重磅功能及产品能力盛大发布 立即下载

相关镜像