SQL存储过程脚本,可以用来造测试数据,直接往表里插入
delimiter $$ -- 定义定界符为$$
DROP PROCEDURE IF EXISTS wk; -- 如果本地已经存在存储过程wk,则进行drop删除
CREATE PROCEDURE wk() -- 创建存储过程(procedure)
BEGIN
DECLARE tid int; -- 使用declare声明变量tid的类型为int
DECLARE uid int;
SET tid=1205346; -- 使用set给变量赋值
SET uid=420000001;
WHILE tid<2005346 DO -- 使用while ... do ... end while;命令来创建循环
INSERT INTO `testEntrust`(`user_id`, `task_id`, `status`, `serial_no`, `task_no`, `bank_serial_no`, `apply_date`, `apply_time`, `client_mobile`, `ext_params`, `version`, `resp_code`, `resp_msg`, `resp_status`, `fail_reason`, `create_time`, `update_time`) VALUES (uid, tid, '9', 'c01d7d543fab3bd787d3141630', '000000004744', '0020004 ', '2020-09-26', '16:10:21', '8e0e90d0fb5c4b055c0e43b55d', NULL, 0, '0', '请求已提交', '3', '', '2020-09-26 10:17:49', '2020-09-26 10:17:49');
SET tid=tid+1;
SET uid=uid+1;
END WHILE;
END $$
delimiter ;
CALL wk();
关于delimiter $$
- delimiter表示定界符,默认指的是分号
;
,正常MySQL语句遇到分号后,就会立马执行 - 但遇到一大段的命令且包含分号,这时需要整个一起执行(类似函数一样),那么就需要定义其他的定界符,可以是
$$
或者//
- 上边的代码中,首句
delimiter $$
就是定义定界符为$$
,当语句结束时,就可以用$$
来结束 - 而之后的语句又要恢复使用分号
;
作为定界符,所以又定义了delimiter ;
创建存储过程的语法
delimiter $$
create procedure p_name(args)
begin
...
end $$
如果是要多次执行,需要先清空之前的存储过程,如下
delimiter $$
drop procedure if exists p_name;
create procedure p_name(args)
begin
...
end $$
调用存储过程使用call
CALL wk();
SQL语法(变量定义/赋值、循环语句)
- SQL需要声明变量类型,使用
declare
declare id int;
- SQL给变量赋值,使用
set
,然后用=
赋值
set id=1000;
- 在每个语句结束时,需要用分号
;
结束,包括声明变量、赋值的时候 - 循环语句如下,
while ... do ... end while;
while id<20000 do
insert ...;
set id=id+1;
end while
- 使用
repeat
来作为循环
repeat
INSERT INTO ...;
set id = id + 1;
until id >= 20000 end repeat;