当我调用以下存储过程时,出现此错误: ERROR 1064 (42000):您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,了解在第 1 行“01:53:26,1)”附近使用的正确语法
CREATE PROCEDURE `update_xyz` (IN col_name VARCHAR(30), IN ip_add VARCHAR(24), IN lat FLOAT , IN longit FLOAT)
BEGIN
SET @col = col_name;
SET @a_ip = ip_add;
SET @lati = lat;
SET @longitu = longit;
IF ROW_COUNT()=0 THEN
SET @time1 = CURRENT_TIMESTAMP();
SET @sql_text2 = concat('INSERT INTO table1 (ip,latitude,longitude,date,',@col,') VALUES (',INET_ATON(@a_ip),',', @lati,',', @longitu,',', @time1,',1)');
PREPARE stmt2 FROM @sql_text2;
EXECUTE stmt2;
DEALLOCATE PREPARE stmt2;
END IF;
END
但是,如果我删除@time1,插入将继续,并将 DATETIME 字段保留为 NULL。
最佳答案
change
//SET @time1 = CURRENT_TIMESTAMP();//remove this line
SET @sql_text2 = concat('INSERT INTO table1 (ip,latitude,longitude,date,',@col,') VALUES (',INET_ATON(@a_ip),',', @lati,',', @longitu,',', @time1,',1)');
replace this line.
SET @sql_text2 = concat('INSERT INTO table1 (ip,latitude,longitude,date,',@col,') VALUES (',INET_ATON(@a_ip),',', @lati,',', @longitu,',', CURRENT_TIMESTAMP(),',1)');
关于MySQL:无法使用存储过程插入 CURRENT_TIMESTAMP - 动态语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42360627/