0
点赞
收藏
分享

微信扫一扫

mysql存储过程常用函数

Just_Esme 2022-01-06 阅读 56

文章目录


前言

记录存储过程中常用的函数,随时更新


一、存储过程的一般写法

基本语法:
CREATE PROCEDURE demo (IN p_in int)
BEGIN
语句…
END

定义变量:
DECLARE my_id int;
DECLARE my_name varchar(20);

二、存储过程示例

1.一般写法

说明:
1、主键id不需要写在insert语句中
2、创建完成后,在查询框中 CALL 存储过程名称() ; 即可调用该存储过程

DELIMITER $$

USE `monitor_1`$$

DROP PROCEDURE IF EXISTS `creat_device`$$

CREATE DEFINER=`root`@`%` PROCEDURE `creat_device`()
BEGIN
    DECLARE i INT DEFAULT 0;
    WHILE i<5 DO
 INSERT INTO `mon_device` (
  `collect_type`,
  `device_code`,
  `device_name`,
  `device_type`,
  `parent_id`,
  `collect_device_id`,
  `power_id`,
  `version`,
  `slave`,
  `auth_key`,
  `collect`,
  `dtu_config_id`,
  `state`,
  `state_desc`,
  `vendor`,
  `chose_item`,
  `mppt_type`,
  `STRING_INFO`,
  `METER_ADDRESS`,
  `PROTOCOL_TYPE`
) 
VALUES
  (
    '',
    CONCAT(SUBSTRING(MD5(RAND()),1,6),'-',UNIX_TIMESTAMP(NOW()) * 1000 + i),
    CONCAT('逆变器352-',i),
    'inverter',
    NULL,
    352,
    169,
    NULL,
    NULL,
    '',
    0,
    NULL,
    0,
    '',
    '',
    '1,2',
    'PV',
    '{"1":{"coefficient":1.0,"value":1},"2":{"coefficient":1.0,"value":1}}',
    '',
    'MQTT'
  );
  SET i = i + 1 ;
  END WHILE ; 
    END$$

DELIMITER ;

2.带判断的写法

示例:

BEGIN
DECLARE i INT DEFAULT 1;
DECLARE gender INT;
WHILE i < 10
DO
IF i % 2 = 0 THEN
SET gender = 0;
ELSE
SET gender = 1;
END IF;
INSERT INTO user (user_name, password, age, gender, phone_num, email, create_time) VALUES
(CONCAT('mtx_',i),'123456',FLOOR(RAND()*100),gender,1350000000+i,CONCAT('mtx_',i,'@qq.com'),NOW());
SET i = i + 1;
END WHILE;
END

3.常用函数总结

拼接
1、CONCAT(str1,str2,…):拼接多个字符串
随机数相关
1、RAND():获取0-1之间的随机数
2、ROUND(3.141592637243,3):对3.141592637243取小数点后3位
3、RAND()*100:获取0-100之间的随机数
4、FLOOR(x):对x取整
5、MD5(XX):取XX的md5值
6、SUBSTRING(str,pos,len):截取字符串,从字符串str的第pos位开始取(pos下标从1开始),取len位
时间相关
1、NOW():当前时间,格式yyyy-MM-dd HH:mm:SS
2、UNIX_TIMESTAMP(NOW()):时间戳,单位为秒
3、UNIX_TIMESTAMP(NOW()) * 1000:当前时间戳,单位为毫秒


举报

相关推荐

0 条评论