#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
предложение).