概述
抽空总结一下mysql的一些概念性内容,涉及存储过程、函数、视图、触发器等。
一、查看存储过程、函数、视图、触发器、表
1、存储过程
select * from mysql.proc where type='PROCEDURE';show procedure status; show create procedure proc_name; //存储过程定义
2、函数
select * from mysql.proc where type='FUNCTION';show function status;show create function func_name; //函数定义
3、视图
SELECT * from information_schema.VIEWS SHOW CREATE VIEW 视图名
4、表
SELECT * from information_schema.TABLES show create table table_name;
5、触发器
SELECT * FROM information_schema.triggers;show create trigger trigger_name;
二、函数
mysql自定义函数就是实现程序员需要sql逻辑处理,参数是IN参数,含有RETURNS字句用来指定函数的返回类型,而且函数体必须包含一个RETURN value语句。
1、语法:
创建: CREATE FUNCTION 函数名称(参数列表) RETURNS 返回值类型 函数体修改: ALTER FUNCTION 函数名称 [characteristic ...]删除: DROP FUNCTION [IF EXISTS] 函数名称调用: SELECT 函数名称(参数列表)
2、实例
CREATE DEFINER=`root`@`%` FUNCTION `getUnitChildList`(employeeCode VARCHAR(30)) RETURNS text CHARSET utf8BEGIN #最终返回的组织code字符串 DECLARE codeResult TEXT DEFAULT "-1"; #最终返回的组织id字符串 DECLARE result TEXT DEFAULT "-1"; #组织id的中间字符串 DECLARE sTempChd VARCHAR(10000); #最上层组织的字符串 DECLARE currentCode VARCHAR(10000) DEFAULT '-1'; #游标是否结束标识 DECLARE endFlag INT DEFAULT 0; #定义游标-unitCur,查询出当前员工拥有的所有岗位的组织code DECLARE unitCur CURSOR FOR SELECT DISTINCT pos.unit_code FROM hr_org_position_b pos LEFT JOIN hr_employee_assign ass ON pos.POSITION_CODE = ass.POSITION_CODE LEFT JOIN hr_employee HE ON he.EMPLOYEE_CODE = ass.EMPLOYEE_CODE WHERE he.EMPLOYEE_CODE = employeeCode AND ass.ENABLED_FLAG = 'Y' AND pos.ENABLED_FLAG = 'Y'; #结束set为1 DECLARE CONTINUE HANDLER FOR NOT FOUND SET endFlag = 1;#开始遍历游标 OPEN unitCur; REPEAT FETCH unitCur INTO currentCode; SET sTempChd = currentCode; #当前组织也加上 SET result=CONCAT(result,