MySql存储过程简单总结

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_33330334/article/details/79227584

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');


猜你喜欢

转载自blog.csdn.net/qq_33330334/article/details/79227584
今日推荐