创新路
我们一直在努力

Mysql之存储过程

一、什么是存储过程:数据库中保存的一系列 sql 命令的集合;编写存储过程时,可以使用变量、条件判断、流程控制等;存储过程,就是 MySQL 中的脚本

二、存储过程优点:  提高性能、可减轻网络负担、可以防止对表的直接访问、避免重复的 sql 操作

三、基本使用:创建  查看  调用   删除

    1、创建存储过程

        delimiter //         修改命令结束符为//

        create procedure 名称 ()

        begin    

        功能代码

        …..

        …..

        end     //结束存储过程的功能代码

        //                  结束存储过程

        delimiter ;           修改回命令结束符为;

 

    2、查看存储过程

        方法 1  : mysql> show procedure status;

        方法 2  :mysql> select db,name,type from mysql.proc where name=“ 存储过程名 ";   

                      mysql> select db,name,type from mysql.proc where name="say";

        mysql.proc :记录存储过程文件 db 库名  name名称  type 类型(FUNCTION 函数 ,PROCEDURE  存储过程) body具体代码

 

    3、调用存储过程 

        call  存储过程名 ();     //存储过程没有参数时, () 可以省略有参数时,在调用存储过程时,必须传参。

        mysql> call say();

 

    4、删除存储过程

        drop procedure 存储过程名;

        mysql> drop procedure say;

 

    5、存储过程参数类型: in   out   inout

        Create procedure 名称 (类型 参数名 数据类型 ,类型 参数名 数据类型) 默认类型是 in

        A、in 输入参数  作用是给存储过程传值,必须在调用存储过程时赋值,在存储过程中该参数的值一般不修改,如果变化,值只在存储过程中有效;

        

        delimiter //

        create procedure p1(in  nu  char(20))

        begin

        select  name,shell from db9.user where name=nu;

        end

        //

        delimiter ;

 

        B、out 输出参数,不能用于传入参数值,该值可在存储过程内部被改变\返回;调用存储过程时,OUT参数也需要知道,但必须是变量,不能是常量。

        delimiter //

        create procedure p3( out num int(2) )

        begin

        select num;      //为空

        set num=7;

        select num;        //为7

        select count(name) into num from db9.user where shell="/bin/bash";

        select num;       //为2

        end

        //

        delimiter ;

        call p3(@num)      //该值会重新赋予到外面的用户变量里,即select @num;会为2,不会为前面赋予的值

 

        C、inout 输入/输出参数   调用时可传入值,在调用过程中,可修改其值,同时也可返回值,INOUT调用时传入的是变量,而不是常量

         注意:此三中类型的变量在存储过程中调用时不需要加 @ 符号 !!!

未经允许不得转载:天府数据港官方信息博客 » Mysql之存储过程

客官点个赞呗! (0)
分享到:

评论 抢沙发

评论前必须登录!

天府云博 - 做有态度的开发&运维&设计学习分享平台!

联系我们百度云主机