数据库 | Mysql - [自定义函数 & 存储过程]

§1 函数

信任自定义函数

show variables like '%log_bin_trust_function_creators%';

此变量为 OFF 时,创建修改函数会报错

ERROR 1418 (HY000): This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)

通过下面语句设置

set global log_bin_trust_function_creators=1;

创建自定义函数
创建格式如下

DELIMITER &&
CREATE FUNCTION func_name(var_name var_type) RETURNS return_type
BEGIN
// function
END
$$

示例(随机字符串)

DELIMITER &&
CREATE FUNCTION rand_string(n INT) RETURNS VARCHAR(255)
BEGIN

DECLARE charstr VARCHAR(100) DEFAULT 'abcefghigklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
DECLARE resulestr VARCHAR(100) DEFAULT '';
DECLARE i INT DEFAULT 0;

WHILE i < n DO
	set returnstr = CONCAT(returnstr, SUBSTRING(charstr, FLOOR(1 + RAND() * 62), 1));
	set i = i + 1;
END WHILE:
RETURN returnstr;
END
$$

§2 存储过程

创建自定义函数
创建格式如下

DELIMITER &&
CREATE PROCEDURE name(var_name var_type)
BEGIN
// PROCEDURE 
END
$$

示例

DELIMITER &&
CREATE PROCEDURE add_data (n INT)
BEGIN

DECLARE i INT DEFAULT 0;
set autocommit = 0;

REPEAT
	set i = i + 1;
	insert into .......
	until i = n;
END REPEAT:

COMMIT;

END
$$

调用自定义函数

CALL PROCEDURE_NAME(params...);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值