您的位置:首页 > 数据库 > MySQL

MySql存储过程简单总结

2018-02-01 14:00 411 查看
MySql存储过程简单总结。

CREATE TABLE `STUDENT`
(
`ID` VARCHAR(50) NOT NULL,
`NAME` VARCHAR(50) NOT NULL,
`AGE` INT(3) NOT NULL,
`CITY` VARCHAR(100) NULL

)ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO STUDENT(ID,NAME,AGE,CITY) VALUES(UUID(),'李四',20,'广东深圳1');
INSERT INTO STUDENT(ID,NAME,AGE,CITY) VALUES(UUID(),'王五',22,'广东深圳2');
INSERT INTO STUDENT(ID,NAME,AGE,CITY) VALUES(UUID(),'张三',23,'广东深圳3');
INSERT INTO STUDENT(ID,NAME,AGE,CITY) VALUES(UUID(),'刘星',24,'广东深圳4');

-- 1, 创建不带参数的存储过程
DROP PROCEDURE IF EXISTS select_students_count; -- 没有括号()
CREATE PROCEDURE `select_students_count`()
BEGIN

SELECT count(*) from STUDENT;

END;
-- 调用
call select_students_count();

-- 2, 创建带参数的存储过程
DROP PROCEDURE IF EXISTS select_students_count; -- 没有括号()
CREATE PROCEDURE `select_students_count`(

in _name varchar(225)
)
BEGIN

SELECT count(*) from STUDENT WHERE `NAME` =_NAME;

END;
-- 调用
call select_students_count('李四');

-- 3, 带有输出参数的存储过程
DROP PROCEDURE IF EXISTS select_students_by_name; -- 没有括号()
CREATE PROCEDURE `select_students_by_name`(
in _name varchar(225),-- 输入参数
out _city varchar(225),-- 输出参数
INOUT _age int(3) -- 输入输出参数
)
BEGIN

SELECT city from STUDENT WHERE `NAME` =_NAME AND `AGE` = _age INTO _city;

END;
-- 调用
set @_age = 20;
set @_name = '李四';
call select_students_by_name(@_name, @_city, @_age);
select @_city as city, @_age as age;

-- 4 ,带有通配符的存储过程
DROP PROCEDURE IF EXISTS SELECT_STUBY_LIKENAME;
CREATE PROCEDURE `SELECT_STUBY_LIKENAME`
(
IN _LIKENAME VARCHAR(20)
)
BEGIN
SELECT * FROM STUDENT WHERE NAME LIKE _LIKENAME;
END;
call SELECT_STUBY_LIKENAME('%王%');

-- 存储过程增删改查
-- 1,增加
DROP PROCEDURE IF EXISTS `INSERT_STUDENT`;

CREATE PROCEDURE `INSERT_STUDENT`(
_ID VARCHAR(50),
_NAME VARCHAR(50),
_AGE INT(3),
_CITY VARCHAR(50)
)
BEGIN
INSERT INTO STUDENT(ID,NAME,AGE,CITY) VALUES(_ID,_NAME,_AGE,_CITY);
END;

CALL INSERT_STUDENT(UUID(),'王小二',36,'东莞');

-- 2,修改学生信息
DROP PROCEDURE IF EXISTS UPDATE_STUDENT;
CREATE PROCEDURE UPDATE_STUDENT(
_ID VARCHAR(50),
_NAME VARCHAR(50),
_AGE INT(3),
_CITY VARCHAR(50)

)
BEGIN
UPDATE STUDENT SET NAME=_NAME,AGE=_AGE,CITY=_CITY WHERE ID =_ID;
END;

CALL UPDATE_STUDENT('c1a5ed9f-0713-11e8-951d-f48e387783d2','王五',18,'北京');

SELECT * FROM STUDENT;

-- 3, 删除
DROP PROCEDURE IF EXISTS DELETE_STUDENT;
CREATE PROCEDURE DELETE_STUDENT(
_ID VARCHAR(50)
)
BEGIN
DELETE T FROM STUDENT T WHERE T.ID=_ID;
END;

CALL DELETE_STUDENT('26b78a86-0704-11e8-951d-f48e387783d2');
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mysql 存储过程