MySql函数和存储过程
MySql函数:
创建语法:
CREATE FUNCTION func_name([func_parameter])
RETURNS TYPE
[characteristics ... ]
routine_body
- CREATE FUNCTION 为创建存储函数的关键字;
- func_name 表示存储函数的名称;
- func_parameter 为存储函数的参数列表,参数列表的形式如下:
- [ IN | OUT | INOUT ] param_name type
- 其中,IN 表示输入参数; OUT 表示输出参数; INOUT 表示既可以输入也可以输出参数;
- param_name 表示参数名称; type 表示参数的类型,该类型可以是MySQL数据库中的任意类型。
- RETURNS type 语句表示函数返同数据的类型;
- characteristic 指定存储函数的特性,取值与创建存储过程时相同。
eg:生成随机数字,返回最大为501的随机数:
CREATE FUNCTION rand_num() RETURNS int(5) BEGIN DECLARE i INT DEFAULT 0; SET i = FLOOR(1+RAND()*500); RETURN i; END
eg:生成随机字符串函数:
#该函数(rand_string)会返回n长的一个字符串
create function rand_string(n INT) returns varchar(255) begin #chars_str定义一个变量chars_str,类型是varchar(100),默认值'abcdefghijklmnopqrstuvwxyzABCDEFJHIJKLMNOPQRSTUVWXYZ'; declare chars_str varchar(100) default 'abcdefghijklmnopqrstuvwxyzABCDEFJHIJKLMNOPQRSTUVWXYZ'; declare return_str varchar(255) default ''; declare i int default 0; while i< n do set return_str =concat(return_str,substring(chars_str,floor(1+rand()*52),1)); set i = i + 1; end while; return return_str; end
MySql存储过程:
创建语法:
CREATE PROCEDURE sp_name ([ proc_parameter ])
[ characteristics..]
routine_body
具体含义可参照上面MySql函数
eg:插入数据
create PROCEDURE insert_emp(in start INT(10),in max_num INT(10)) BEGIN DECLARE i INT(10) DEFAULT start; REPEAT set i=i+1; INSERT INTO test(num,str) VALUES(rand_num(),rand_string(5)); UNTIL i=max_num END REPEAT; END #存储过程调用,插入随机数据100条 call insert_emp(1,100);