如题 存储过程如下:BEGIN declare @sqlstr varchar(200);
declare @i varchar(20);
set @i=curdate();
set @sqlstr = 'CREATE TABLE TABLE_'+cast(@i as varchar);
exec(@sqlstr) ; END$$ 以上语句报错 请问如何解决
谢谢
declare @i varchar(20);
set @i=curdate();
set @sqlstr = 'CREATE TABLE TABLE_'+cast(@i as varchar);
exec(@sqlstr) ; END$$ 以上语句报错 请问如何解决
谢谢
declare @i varchar(20);
set @i=curdate();
set @sqlstr = CONCAT('CREATE TABLE TABLE_',cast(@i as varchar));
PREPARE DD FROM @sqlstr;
EXECUTE DD;
说是语法错误
我用的是sqlyogDELIMITER $$CREATE
/*[DEFINER = { user | CURRENT_USER }]*/
PROCEDURE `monitor`.`123`()
/*LANGUAGE SQL
| [NOT] DETERMINISTIC
| { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
| SQL SECURITY { DEFINER | INVOKER }
| COMMENT 'string'*/
BEGIN declare @sqlstr varchar(200);
declare @i varchar(20);
set @i=curdate();
set @sqlstr = CONCAT('CREATE TABLE TABLE_',cast(@i as varchar));
PREPARE DD FROM @sqlstr;
EXECUTE DD; END$$****************************
错误码: 1064
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 '@sqlstr varchar(200);
declare @i varchar(20);
set @i=curdate();
set @sqlst' at line 10DELIMITER ;
Query OK, 0 rows affected (0.00 sec)mysql> PREPARE stmt1 FROM @sqlstr ;
Query OK, 0 rows affected (0.00 sec)
Statement preparedmysql> EXECUTE stmt1 ;
Query OK, 0 rows affected (0.08 sec)mysql> show tables like 'table_%';
+--------------------------+
| Tables_in_test (table_%) |
+--------------------------+
| table_20090506 |
+--------------------------+
3 rows in set (0.00 sec)mysql>
以前没用过mysql
要好好看看资料了
set @sqlstr=CONCAT('CREATE TABLE `TABLE_',cast(@i as char),'`(id int)');
select @sqlstr;
PREPARE DD FROM @sqlstr;
EXECUTE DD;
测试通过