2016-10-18 7 views
-1

ここで私を助けることができますか?プロシージャMySQLを使用してconcat

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 

何が問題ですか?

+0

あなたは何をしようとしていますか?代わりに何が起こるのですか?エラーメッセージはありますか? – Philipp

+0

SQLエラー(1064):SQL構文にエラーがあります。 ( 'account_class _'、@ formateddate)、CONCAT( 'class_courses _'、@ formateddate)、CONCAT( '11行目で使用する正しい構文については、MySQLサーバのバージョンに対応するマニュアルを確認してください。 – hamza

+0

私はプロデューサバックアップを作成する – hamza

答えて

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句)思いとどまらでしょう。

関連する問題