процедура MySQL с использованием concat

#mysql #procedure #concat

#mysql #процедура #конкатенация

Вопрос:

Можете ли вы мне здесь помочь?

 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
  

В чем проблема?

Комментарии:

1. Что вы пытаетесь сделать? Что происходит вместо этого? Есть сообщения об ошибках?

2. Ошибка SQL (1064): у вас ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, на предмет правильного синтаксиса для использования рядом с ‘(‘account_class_’,@formateddate),CONCAT(‘class_courses_’,@formateddate),CONCAT(‘ в строке 11

3. я пытаюсь создать производителя, который создает резервную копию

Ответ №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 предложение).