在MySql中向表中插入随机数据
谁能帮帮我吗?我不知道这里有什么问题 如果存在insertRandom,则删除程序; 创建过程insertRandom 开始 声明mytime时间戳; 设置mytime:=“2009-01-01 00:00:00” 开始 测试循环:循环 当我的时间<现在 我的时间=我的时间+间隔“8小时”; 插入tempdatatemp_val,基准值选择random*110-10,mytime; 端环; 终止 调用insertRandom; 从“临时表格”中选择*;在MySql中向表中插入随机数据,mysql,sql,stored-procedures,Mysql,Sql,Stored Procedures,谁能帮帮我吗?我不知道这里有什么问题 如果存在insertRandom,则删除程序; 创建过程insertRandom 开始 声明mytime时间戳; 设置mytime:=“2009-01-01 00:00:00” 开始 测试循环:循环 当我的时间
过程正文中的分号似乎正在终止该语句。我们需要MySQL将CREATE过程视为一条语句,但MySQL正在切掉该语句,当它看到分号时,将看到一条完整的语句 MySQL中的默认语句分隔符是分号;性格可以覆盖默认分隔符;我们使用分隔符语句进行更改 此处的示例临时将语句分隔符修改为两个美元符号字符$$。在过程体中,出现分号字符不会终止语句。。。MySQL将继续读取,直到找到两个美元符号字符。不用说,程序体不应该包含$$ 请注意,我们使用DELIMITER语句将分隔符更改回分号字符。我没有检查程序主体是否存在其他语法错误;但有些事情很突出。例如,这看起来是错误的
mytime = mytime + interval '8 hours';
这可能应该是SET语句,语法如下:
SET mytime = mytime + INTERVAL 8 HOUR;
在SET语句中,我们可以使用:=代替=作为赋值运算符,因此等价
SET mytime := mytime + INTERVAL 8 HOUR;
对于MySQL存储程序的循环,我们可以做一个循环。。。结束循环并包含一个LEAVE语句,或者我们可以使用WHILE循环,或者
此处记录的语法:
您的代码中有许多错误 请改用此步骤
DELIMITER $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `insertRandom`()
BEGIN
DECLARE mytime timestamp;
SET mytime := '2009-01-01 00:00:00';
DROP TEMPORARY TABLE IF EXISTS tempdata;
CREATE TEMPORARY TABLE tempdata (temp_val BIGINT, datum timestamp);
test_loop : LOOP
IF mytime >= now() THEN
LEAVE test_loop;
END IF;
SET mytime = TIMESTAMPADD(HOUR,8,mytime);
insert into tempdata(temp_val, datum) values((select (rand()*110)-10), mytime);
END LOOP;
END$$
DELIMITER ;
然后
call insertRandom();
SELECT * FROM tempdata;
请不要使用错误的图像;请将错误文本翻译成英语,因为本网站仅支持英语。where's waldo的MySQL语法版本。
call insertRandom();
SELECT * FROM tempdata;