使用过程创建一个表:错误1064

时间:2014-04-16 17:36:38

标签: mysql stored-procedures

我尝试使用一个过程创建一个表但是在这一行上有一个错误1064: PRIMARY KEY(Dates)');

这是代码:

DELIMITER $$

CREATE DEFINER=`root`@`localhost` PROCEDURE `new_procedure`(IN tname varchar(20))
BEGIN

SET @s = CONCAT('CREATE TABLE `test`.',tname,'(
  `Dates` DATE NOT NULL,
  `ncl1104` VARCHAR(45) NULL,
  `ncl1204` VARCHAR(45) NULL,
  PRIMARY KEY (`Dates`)');

PREPARE stm FROM @s;
EXECUTE stm;
END

调用程序:

CALL new_procedure ('`new_oil_table`');

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

最后你遗漏了)。我尝试过相同的但是在SQL Server中。见下文

CREATE PROCEDURE new_procedure
@tname varchar(20)
as
BEGIN
declare @s varchar(200);
SET @s = 'CREATE TABLE '+@tname+'(
  Dates DATE NOT NULL,
  ncl1104 VARCHAR(45) NULL,
  ncl1204 VARCHAR(45) NULL,
  PRIMARY KEY (Dates))';

select @s
exec (@s);
END

在您的代码中,错误是@下面

SET @s = CONCAT('CREATE TABLE `test`.',tname,'(
  `Dates` DATE NOT NULL,
  `ncl1104` VARCHAR(45) NULL,
  `ncl1204` VARCHAR(45) NULL,
  PRIMARY KEY (`Dates`)'); <-- Here ) outside quote