存储过程(Procedure)是大型数据库系统中,一组为了完成特定功能的SQL语句集,存储在数据库中,经过第一次编译后调用不需要在再次编译,用户→调用存储过程名字→来执行。

                存储过程是数据库中的一个重要对象。

                 它的特定:

                1.能完成较复杂的判断和运算。

                2.可编程行强,灵活、执行速度相对快一些

                3.SQL编程的代码可重复使用、减少网络之间的数据传输,节省开销

               特定情况下使用,下面来创建存储过程(简单→复杂):

                 

mysql 存储过程 数组 mysql存储过程定义数组_mysql 存储过程 数组

                存储过程存在于库的函数中:

mysql 存储过程 数组 mysql存储过程定义数组_mysql 存储过程 数组_02

         我们可以通过 call  来调用

       

mysql 存储过程 数组 mysql存储过程定义数组_mysql 存储过程 数组_03

 在存储过程中我们还需要掌握变量 等.....

       

mysql 存储过程 数组 mysql存储过程定义数组_后端_04

 

调用

mysql 存储过程 数组 mysql存储过程定义数组_存储过程_05

 这里 我们的变量声明使用declare ,一句declare 只声明一个变量,变量必须先声明后使用,变量具有数据类型的长度,与mysql的SQL数据类型一致,因此甚至还能制定默认值,字符集和规则等,变量可以通过set来赋值 ,也可以通过select into的方式来赋值,变量需要返回,可以使用select 

在我们应用 的过程中,我们要知道变量的作用域范围,作用范围在begin ~ end 之间,end结束我们变量的作用范围即为结束,需要多块之间用使用全局变量,可以在多可块中传递。

mysql 存储过程 数组 mysql存储过程定义数组_后端_06

 这种情况都会返回

mysql 存储过程 数组 mysql存储过程定义数组_存储过程_07

这种情况就只范围count2

 

mysql 存储过程 数组 mysql存储过程定义数组_开发语言_08

设置全局变量后就可以拿到你需要的返回参数

 存储过程中变量的作用域,作用范围在begin和end块之间,end结束变量的作用范围即结束

使用存储过程中 我们也可以加入参数 它的类型有:IN OUT INOUT 

写法:create procedure 名称([IN|OUT|INOUT] 参数名 参数数据类型)

begin 
         /
        end ;

        存储过程的参数IN类型使用

        ~:传入参数:类型为in,表示该参数的值必须在调用存储过程事指定,如果不显示指定为in,那么默认就是in类型。
       ~ :、IN类型参数一般只用于传入,在调用过程中一般不作为修改和返回
        ~:、如果调用存储过程中需要修改和返回值,可以使用OUT类型参数

        

mysql 存储过程 数组 mysql存储过程定义数组_存储过程_09

         

mysql 存储过程 数组 mysql存储过程定义数组_后端_10

         调用错误的时候,因为我们没IN类型的值传入

        

mysql 存储过程 数组 mysql存储过程定义数组_后端_11

        over~~~~

        如果是OUT类型的时候

        

mysql 存储过程 数组 mysql存储过程定义数组_存储过程_12

调用一下 

mysql 存储过程 数组 mysql存储过程定义数组_开发语言_13

 调用要先定义一个变量,set @变量名

总结 out 类型

        1、传出参数:在调用存储过程中,可以改变其值,并可返回;
        2、out是传出参数,不能用于传入参数值;
        3、调用存储过程时,out参数也需要指定,但必须是变量,不能是常量;
        4、如果既需要传入,同时又需要传出,则可以使用INOUT类型参数  

        

INOUT 类型的使用

mysql 存储过程 数组 mysql存储过程定义数组_开发语言_14

mysql 存储过程 数组 mysql存储过程定义数组_后端_15

 

 总结:

        1、可变变量INOUT:调用时可传入值,在调用过程中,可修改其值,同时也可返回值;
        2、INOUT参数集合了IN和OUT类型的参数功能;
        3、INOUT调用时传入的是变量,而不是常量;