MySQL:无法使用存储过程插入 CURRENT_TIMESTAMP - 动态语句

标签 mysql stored-procedures

当我调用以下存储过程时,出现此错误: 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/

相关文章:

mysql - 如何对一系列数据进行分组以在 GOOGLE BigQuery 中进行分类

php - 如何使用php从mysql获取数据到www/data/文件夹保存为xls?

mysql - 如何绘制一个 ERD,您可以在其中存储基于其他 id 的计算方法

php - 内存缓存限制(MySQL 和 PHP)

sql - 选择最新条目的Id,值为***

MySQL : When stored procedure parameter name is the same as table column name

java - 从 Java 调用存储过程 - Spring JDBC 的现代替代品?

oracle - PLS-00222在此范围内不存在名称为 'WRITE_ERROR_LOG'的功能

mysql - 在 MySql 中,如何根据特定的 related_id 可用的记录 id 创建一组连续的值

sql-server - 获取链接服务器状态的存储过程