MySQL_MySQL存储过程(重要)

引入:

        我们要实现对数据库表的一个操作,实现这一个需要使用多条SQL语句进行操作。同时,这样的操作在我的程序中是使用比较频繁的。回想我们以前学习java的时候。我们需要需要完成一个特定的功能,而这一个功能使用的频率比较多。那么这一个时候我们是选用了把实现的代码抽取出来,写成一个方法,每当我需要实现这一个功能的时候就去调用这一个方法即可。那么在数据库中有没有类似的操作呢?可以实现对一些特定的功能实现类似方法的操作?那么就是存储过程。

存储过程概述

存储过程概述

1.概述
  所谓的存储过程就是一组预先编译好的SQL语句的集合,理解成批处理语句。

2.使用存储过程的好处
  (1)、提高代码的重用性。
  (2)、简化操作。
  (3)、减少了编译次数并且减少了和数据库服务器的连接次数,提高了效率。

 存储过程创建

存储过程的创建

1.创建存储过程语法:
  CREATE PROCEDURE 存储过程名(参数列表)
  BEGIN
	存储过程体(一组合法的SQL语句)
  END


2.创建过程注意事项

(1)、参数列表包含三部分
参数模式  参数名   参数类型
如:
in       stuname  varchar(20)

参数模式:
in:该参数可以作为输入,也就是该参数需要调用方传入值
out:该参数可以作为输出,也就是该参数可以作为返回值
inout:该参数既可以作为输入又可以作为输出,也就是该参数既需要传入值,又可以返回值

(2)、使用注意事项

A:如果存储过程体仅仅只有一句话,begin end可以省略。

B:存储过程体中的每条sql语句的结尾要求必须加分号。

C 存储过程的结尾可以使用 delimiter 重新设置
  语法:
  delimiter 结束标记
  如:
  delimiter $

存储过程的调用

存储过程的调用:

CALL 存储过程名(实参列表);

类似于方法的调用。

存储过程使用测试

1. 空参列表,存储多条记录(实际存储过程在存储多条记录效果更佳),创建以及调用

创建测试使用数据库表 

DROP TABLE IF EXISTS `admin`;

CREATE TABLE `admin` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(10) NOT NULL,
  `password` varchar(10) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;

创建存储过程并调用 

 2.参数模式的基本使用,如使用带'in'模式参数的存储过程,传入参数,找出其对应的值

表beauty

表boys 

创建存储过程并调用 

 

 3.out 模式参数的存储过程,实现结果以及数据库表如2

 

 4.创建带inout模式参数的存储过程,实现传入a和b两个值,最终a和b都翻倍并返回

存储过程的删除操作

删除存储过程语法

语法:drop procedure 存储过程名;

如:删除存储过程myp1;

查看存储过程的相关信息

查看存储过程的信息

语法:SHOW CREATE PROCEDURE  存储过程名称;

如:查看myp1存储过程的相关信息

发布了51 篇原创文章 · 获赞 10 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/u013185175/article/details/103230533