存储过程(Procedure)是大型数据库系统中,一组为了完成特定功能的SQL语句集,存储在数据库中,经过第一次编译后调用不需要在再次编译,用户→调用存储过程名字→来执行。
存储过程是数据库中的一个重要对象。
它的特定:
1.能完成较复杂的判断和运算。
2.可编程行强,灵活、执行速度相对快一些
3.SQL编程的代码可重复使用、减少网络之间的数据传输,节省开销
特定情况下使用,下面来创建存储过程(简单→复杂):
存储过程存在于库的函数中:
我们可以通过 call 来调用
在存储过程中我们还需要掌握变量 等.....
调用
这里 我们的变量声明使用declare ,一句declare 只声明一个变量,变量必须先声明后使用,变量具有数据类型的长度,与mysql的SQL数据类型一致,因此甚至还能制定默认值,字符集和规则等,变量可以通过set来赋值 ,也可以通过select into的方式来赋值,变量需要返回,可以使用select
在我们应用 的过程中,我们要知道变量的作用域范围,作用范围在begin ~ end 之间,end结束我们变量的作用范围即为结束,需要多块之间用使用全局变量,可以在多可块中传递。
这种情况都会返回
这种情况就只范围count2
设置全局变量后就可以拿到你需要的返回参数
存储过程中变量的作用域,作用范围在begin和end块之间,end结束变量的作用范围即结束
使用存储过程中 我们也可以加入参数 它的类型有:IN OUT INOUT
写法:create procedure 名称([IN|OUT|INOUT] 参数名 参数数据类型)
begin
/
end ;
存储过程的参数IN类型使用
~:传入参数:类型为in,表示该参数的值必须在调用存储过程事指定,如果不显示指定为in,那么默认就是in类型。
~ :、IN类型参数一般只用于传入,在调用过程中一般不作为修改和返回
~:、如果调用存储过程中需要修改和返回值,可以使用OUT类型参数
调用错误的时候,因为我们没IN类型的值传入
over~~~~
如果是OUT类型的时候
调用一下
调用要先定义一个变量,set @变量名
总结 out 类型
1、传出参数:在调用存储过程中,可以改变其值,并可返回;
2、out是传出参数,不能用于传入参数值;
3、调用存储过程时,out参数也需要指定,但必须是变量,不能是常量;
4、如果既需要传入,同时又需要传出,则可以使用INOUT类型参数
INOUT 类型的使用
总结:
1、可变变量INOUT:调用时可传入值,在调用过程中,可修改其值,同时也可返回值;
2、INOUT参数集合了IN和OUT类型的参数功能;
3、INOUT调用时传入的是变量,而不是常量;