使用navicat 客户端直接创建存储过程和调用

以下表示创建表结构,插入数据,并使用存储过程创建往数据表中添加记录

CREATE TABLE `employees` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `name` varchar(24) NOT NULL DEFAULT '' COMMENT '姓名',
 `age` int(11) NOT NULL DEFAULT '0' COMMENT '年龄',
 `position` varchar(20) NOT NULL DEFAULT '' COMMENT '职位',
 `hire_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '入职时间',
 PRIMARY KEY (`id`),
 KEY `idx_name_age_position` (`name`,`age`,`position`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='员工记录表';
 
 INSERT INTO employees(name,age,position,hire_time) VALUES('LiLei',22,'manager',NOW());
 INSERT INTO employees(name,age,position,hire_time) VALUES('HanMeimei', 23,'dev',NOW());
 INSERT INTO employees(name,age,position,hire_time) VALUES('Lucy',23,'dev',NOW());
 
 -- 插入一些示例数据
 drop procedure if exists insert_emp;
 delimiter ;;
 create procedure insert_emp()       
 begin
   declare i int;                   
   set i=1;                         
   while(i<=100000)do                
     insert into employees(name,age,position) values(CONCAT('zhuge',i),i,'dev'); 
     set i=i+1;                      
   end while;
 end;;
 delimiter ;
 call insert_emp();

第二种方式

需要注意的是:
(1):使用navicat 创建存储过程的时候,传参方式注意一下
(2):使用到了函数 replace ,替换操作,replace(‘替换的字符串’,‘需要被替换的字符’,‘替换成什么字符串’)
(3):函数 FIND_IN_SET,查找集合,类似于 where id in(1,2,3)这样的语句
(4):函数 group_concat,类似于实现列转行的操作,这里只是针对的是某一列转换成某一行,并用‘,’连接多个结果

在这里插入图片描述

begin
	START TRANSACTION;	
	SELECT c_directory into @var_c_directory from t_knwg_knowledge_info where c_id = var_c_id;
	SELECT replace(group_concat(c_name),',','/') into @cn1  from t_knwg_directory where  FIND_IN_SET(c_id,replace(@var_c_directory,'/',','));
	commit;
	SELECT @cn1 as name ;
	end
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐