【问题标题】:procedure MySQL using concat使用 concat 处理 MySQL
【发布时间】:2016-10-18 12:31:00
【问题描述】:

你能帮帮我吗?

BEGIN

set @currentdate=now();

set @formateddate=convert(date_format(@currentdate,'%Y%m%d'),char);

select @t;

drop table if exists CONCAT('account_class_',@formateddate) 

,CONCAT('class_courses_',@formateddate),CONCAT('student_',@formateddate),CONCAT(

'messages_',@formateddate),CONCAT('announcement_',@formateddate),CONCAT('student

_activity_',@formateddate),CONCAT('activity_',@formateddate),CONCAT('account_cla

ss_students_',@formateddate);

create table CONCAT('account_class_',@formateddate) select * from account_class;

create table CONCAT('class_courses_',@formateddate) select * from class_courses;

create table CONCAT('student_',@formateddate) select * from student;

create table CONCAT('messages_',@formateddate) select * from messages;

create table CONCAT('announcement_',@formateddate) select * from announcement;

create table CONCAT('student_activity_',@formateddate) select * from 

student_activity;

create table CONCAT('activity_',@formateddate) select * from activity;

create table CONCAT('account_class_students_',@formateddate) select * from 

account_class_students;


END

有什么问题?

【问题讨论】:

  • 你想做什么?相反会发生什么?有任何错误消息吗?
  • SQL 错误 (1064):您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 11 行的 '('account_class_',@formateddate) ,CONCAT('class_courses_',@formateddate),CONCAT(' 附近使用正确的语法
  • 我正在尝试制作创建备份的生产者

标签: mysql procedure concat


【解决方案1】:

您正在尝试构造一个表名。这是不允许的。理论上,您可以使用动态 SQL:

declare @sql;

set @sql = replace('create table [table] select * from account_class',
                   [table], 'CONCAT('account_class_', @formateddate));

prepare x from @sql;

execute x;

但是,当简单的视图可以做你想做的事情(或者只是一个where 子句)时,我不鼓励创建这样大量的表。

【讨论】:

    猜你喜欢
    • 2015-12-16
    • 1970-01-01
    • 2022-01-20
    • 1970-01-01
    • 2012-12-01
    • 1970-01-01
    • 2018-09-02
    • 2014-06-05
    • 2014-12-04
    相关资源
    最近更新 更多