第一次用mysql实现一个简单的存储过程,返回查询员工的工资等级。
工资<1000,等级为D;
1000<=工资<2000,等级为C;
2000<=工资<3000,等级为B;
3000<=工资<5000,等级为A;
5000<=工资,等级为S;
首先准备一张员工信息表(emp),数据如下。
INSERT INTO `emp` VALUES ('7369', 'SMITH', 'CLERK', '7902', '1980-12-17', '800', null, '20');
INSERT INTO `emp` VALUES ('7499', 'ALLEN', 'SALESMAN', '7698', '1981-02-20', '1600', '300', '30');
INSERT INTO `emp` VALUES ('7521', 'WARD', 'SALESMAN', '7698', '1981-02-22', '1250', '500', '30');
INSERT INTO `emp` VALUES ('7566', 'JONES', 'MANAGER', '7839', '1981-04-02', '2975', null, '20');
INSERT INTO `emp` VALUES ('7654', 'MARTIN', 'SALESMAN', '7698', '1981-09-28', '1250', '1400', '30');
INSERT INTO `emp` VALUES ('7698', 'BLAKE', 'MANAGER', '7839', '1981-05-01', '2850', null, '30');
INSERT INTO `emp` VALUES ('7782', 'CLARK', 'MANAGER', '7839', '1981-06-09', '2450', null, '10');
INSERT INTO `emp` VALUES ('7788', 'SCOTT', 'ANALYST', '7566', '1987-04-19', '3000', null, '20');
INSERT INTO `emp` VALUES ('7839', 'KING', 'PRESIDENT', null, '1981-11-17', '5000', null, '10');
INSERT INTO `emp` VALUES ('7844', 'TURNER', 'SALESMAN','7698', '1981-09-08', '1500', '0', '30');
INSERT INTO `emp` VALUES ('7876', 'ADAMS', 'CLERK', '7788', '1987-05-23', '1100', null, '20');
INSERT INTO `emp` VALUES ('7900', 'JAMES', 'CLERK', '7698', '1981-12-03', '950', null, '30');
INSERT INTO `emp` VALUES ('7902', 'FORD', 'ANALYST', '7566', '1981-12-03', '3000', null, '20');
INSERT INTO `emp` VALUES ('7934', 'MILLER', 'CLERK', '7782', '1982-01-23', '1300', null, '10');
下面开始实现~
Step1.navicat页面选择函数,选择新建函数,我们要实现一个存储过程,类型选存储过程,点击下一步。
Step2.创建参数。IN 输入参数,OUT 输出参数,INOUT 输入输出参数。
这个例子里,建立了一个v_name,作业入参,表示被查询的员工;v_sal、v_level为输出参数,表示工资、工资级别。参数建好了,点击完成。
Step3. mysql初始一个模板,可以开始写存储过程了。
step4.点击运行,输入参数。'KING’为被查询员工,@v_sal、@v_level为出参。写好参数后点击确定执行存储过程。
输出信息如下,员工KING的工资等级为S。