MySQL 使用navicat客户端 调用存储过程的两种方式
使用navicat 客户端直接创建存储过程和调用第二种方式以下表示创建表结构,插入数据,并使用存储过程创建往数据表中添加记录CREATE TABLE `employees` (`id` int(11) NOT NULL AUTO_INCREMENT,`name` varchar(24) NOT NULL DEFAULT '' COMMENT '姓名',`age` int(11) NOT NULL
·
使用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
更多推荐
已为社区贡献3条内容
所有评论(0)