0
点赞
收藏
分享

微信扫一扫

【SQL文档整理系列1】MySQL创建procedure(可以用来造测试数据)

金刚豆 2022-03-12 阅读 54

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 `cashEntrust`(`user_id`, `task_id`, `strategy_id`, `staff_code`, `currency_type`, `entrust_cash`, `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, 10003, NULL, '0', 1300.00, '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 $$

  1. delimiter表示定界符,默认指的是分号;,正常MySQL语句遇到分号后,就会立马执行
  2. 但遇到一大段的命令且包含分号,这时需要整个一起执行(类似函数一样),那么就需要定义其他的定界符,可以是$$或者//
  3. 上边的代码中,首句delimiter $$就是定义定界符为$$,当语句结束时,就可以用$$来结束
  4. 而之后的语句又要恢复使用分号;作为定界符,所以又定义了delimiter ;

创建存储过程的语法

delimiter $$
create procedure p_name(args)
begin 
... 
end $$

如果是要多次执行,需要先清空之前的存储过程,如下

delimiter $$
drop procedure if exists p_name;
create procedure p_name(args)
begin 
... 
end $$

SQL语法

  1. SQL需要声明变量类型,使用declare
declare id int;
  1. SQL给变量赋值,使用set,然后用=赋值
set id=1000;
  1. 在每个语句结束时,需要用分号;结束,包括声明变量、赋值的时候
  2. 循环语句如下,while ... do ... end while;
while id<20000 do
	insert ...;
	set id=id+1;
end while
举报

相关推荐

0 条评论