MySQL存储过程一

2022-03-10  本文已影响0人  吱吱_呀

存储过程简单讲,就是为以后的使用而保存的一条或者多条MySQL语句的集合。

使用存储过程的的好处:简单、安全、高性能

创建存储过程:

    CREATE  PROCEDURE  过程名([参数] 参数名   参数数据类型)

    BEGIN

            过程体;

     END;

看一个例子

此存储过程名为productpricing,用CREATE PROCEDURE productpricing()语句定义。如果存储过程接受参数,它们将在()中列举出来。此存储过程没有参数,但后跟的()仍然需要。BEGIN和END语句用来限定存储过程体,过程体本身仅是一个简单的SELECT语句。

mysql命令行使用;作为语句分隔符。如果命令行要解释存储过程自身内的;字符,会出现语法错误,所以使用DELIMITER 分隔符定义当下用 //作为新的结束分隔符。结束后,要恢复为原来的分隔符。

调用存储过程

CALL  过程名();

因为存储过程实际上是一种函数,所以存储过程名后需要有()符号(即使不传递参数也需要)

删除存储过程

DROP  PROCEDURE  过程名;

如果要删除的存储过程不存在,该语句会报错,可以使用 DROP PROCEDURE  IF EXISTS.

一般,存储过程并不显示结果,而是把结果返回给指定的变量(内存中一个特定的位置,用来存临时存储数据)。

存储过程的参数类型有:IN,OUT,INOUT

传入参数IN

1.类型为in,表示该参数的值必须在调用存储过程时指定,如果不显示指定为in,那么默认就是in类型。

2.IN类型参数一般只用于传入,在调用过程中一般不作为修改和返回

3.如果调用存储过程中需要修改和返回值,可以使用OUT类型

看一个例子

传出参数OUT

1.传出参数:在调用存储过程中,可以改变其值,并可返回;

 2.out是传出参数,不能用于传入参数值;

3.调用存储过程时,out参数也需要指定,但必须是变量,不能是常量;

4.如果既需要传入,同时又需要传出,则可以使用INOUT类型参数

看一个例子

此存储过程接受三个参数pl,ph,pa分别存储最低,最高和平均价格。每个参数必须指定数据类型,这里使用decimal。关键字OUT指出相应的参数用来从存储过程传出一个值返回给调用者。

调用这个存储过程,必须指定三个变量名

注:所有变量名都要以@开始

再看一个例子

定义IN参数onumber用来传入订单号,OUT参数ototal存储合计总价,调用时传入两个参数。

可变参数INOUT

1.可变变量INOUT:调用时可传入值,在调用过程中,可修改其值,同时也可返回值;

2.INOUT参数集合了IN和OUT类型的参数功能;

3.INOUT调用时传入的是变量,而不是常量;

看一下例子

上一篇 下一篇

猜你喜欢

热点阅读