我认为问题是使用char示例“或”在查询CONCAT(INSERT ....)中我总是得到错误:
0 16:35:45致电 InsertUser(990099,2,1,“Title1”,“Gosc”,“aaa”,“192.168.1.1”,21426,23453245,1)错误 代码:1064。您的SQL语法有错误;检查手册 对应于您的MySQL服务器版本,以获得正确的语法 在'16:35:44,1,1)附近使用'第2行
到程序:
DELIMITER $$
DROP PROCEDURE IF EXISTS InsertUser $$
CREATE PROCEDURE `InsertUser`
(UserId int, ServiceId int(11), CommentsId int(11),
Title varchar(255), Nick varchar(20), content text,
Ip varchar(15), TableCrc int(5),Crc32 int(11) unsigned,
ArticleId int(11))
BEGIN
DECLARE tableName VARCHAR(65535);
set tableName = CONCAT('User',userId);
CALL CreateUsersTable(tableName);
set @a = CONCAT("INSERT INTO `", tableName ,"` (`ServiceId`,
`CommentsId`, `Title`, `Content`,`Ip`,
`TableCrc`, `Crc32`, `ArticleId`,`Date`,
`ViewStatus`, `CommentStatus`)
VALUES (",ServiceId,", ",CommentsId,", '",Title,"',
'",Content,"', '",Ip,"', ",TableCrc,",
",Crc32,", ",ArticleId,",
",now(),", 1, 1);");
PREPARE stmi FROM @a;
EXECUTE stmi;
DEALLOCATE PREPARE stmi;
END$$
答案 0 :(得分:0)
NOW()
返回的字符串值中有一个嵌入空格YYYY-MM-DD HH:MM:SS
^
在您的SQL语句中,需要将其视为字符串,这意味着它需要用单引号括起来。作为一个单独的问题,您不需要使用分号作为SQL文本的一部分:
改变这个:
", ",now(),", 1, 1);");
^
到此:
", '",now(),"', 1, 1)");
^ ^