存储过程:其实就是存储在数据库中,有一些逻辑语句与SQL语句组成的函数。由于是已经编译好的语句,所以执行速度快,而且也安全。

打开mysql的控制台,开始编写存储过程。

实例1:

编写存储过程:

mysql 存储过程 结果集 合并 mysql存储过程怎么写_分隔符

执行存储过程:

mysql 存储过程 结果集 合并 mysql存储过程怎么写_作用域_02

查看执行结果:

 

mysql 存储过程 结果集 合并 mysql存储过程怎么写_存储过程_03

语句解释:

1、delimiter //  ,声明分隔符:DELIMITER是分割符的意思,因为MySQL默认以";"为分隔符,如果我们没有声明分割符,那么编译器会把存储过程当成SQL语句进行处理,则存储过程的编译过程会报错,所以要事先用DELIMITER关键字申明当前段分隔符,这样MySQL才会将";"当做存储过程中的代码,不会执行这些代码(这里如果不懂的话,你可以通过试错的方法来理解)。

2、编写存储过程的格式:CREATE PROCEDURE([[IN |OUT |INOUT ] 参数名 数据类形...])

例子:

  1)create procedure proc1(out s int)  // 只有输出

  2)create procedure proc2(in p_in bigint)  // 只有输入

  3)create procedure proc15() // 没有输入与输出

  4)create procedure demo_multi_param(in id bigint,in name varchar(32),out c int) //多输入与输出

3、过程体的开始与结束使用BEGIN与END进行标识。

4、select count (*) into s from student; // 过程体,一系列的逻辑语句,sql语句

5、delimiter ; 用完了之后要把分隔符还原。

实例2:

mysql 存储过程 结果集 合并 mysql存储过程怎么写_作用域_04

实例3、

mysql 存储过程 结果集 合并 mysql存储过程怎么写_分隔符_05

mysql 存储过程 结果集 合并 mysql存储过程怎么写_作用域_06

结论:输出参数在过程中改变了,会得到保存。但是如果@p_out有预设的值,执行存储过程也不会认预设值,可以从第一个输出为null看出。

实例4、

mysql 存储过程 结果集 合并 mysql存储过程怎么写_分隔符_07

 注意:p_in虽然在存储过程中被修改,但并不影响@p_id的值,执行完语句之后,再执行@select @p_in。

实例5、

mysql 存储过程 结果集 合并 mysql存储过程怎么写_分隔符_08

结论:如果输入输出参数,那么在存储过程中,即会认输入的,如果在存储过程中改变了,那么输出也会认。

实例6:

mysql 存储过程 结果集 合并 mysql存储过程怎么写_分隔符_09

这个是一个多个输入,一个输出的例子。

实例7:

mysql 存储过程 结果集 合并 mysql存储过程怎么写_作用域_10

说明:begin...end 之间是内部变量的作用域,一旦超过这个作用域,其内部声明的变量就结束了,就会变成外部作用域的变量。