美文网首页
MySQL存储过程一

MySQL存储过程一

作者: 吱吱_呀 | 来源:发表于2022-03-10 13:23 被阅读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调用时传入的是变量,而不是常量;

    看一下例子

    相关文章

      网友评论

          本文标题:MySQL存储过程一

          本文链接:https://www.haomeiwen.com/subject/aevtdrtx.html