其他分享
首页 > 其他分享> > 存储过程

存储过程

作者:互联网

语法:create procedure 存储过程名称([ 参数列表 ]) begin --sql语句 end ;

在命令行中,执行创建存储过程的sql时,需要通过关键字delimiter指定sql语句的结束符。

如用!作为结束符:

 

调用: call 名称 ([ 参数 ]) ;

 

查看: 查询指定数据库的存储过程及状态信息: select * from information_schema.routines where routines_schema = 'xxx' ;

            查寻某个存储过程的定义: show create procedure 存储过程名称 ;

 

删除: drop procedure  [ if exists ] 存储过程名称 ;

 

一、变量

1、系统变量:是MySQL服务器提供,不是用户定义的,属于服务器层面,分为全局变量(GLOBAL)、会话变量(SESSION)。

 

查看系统变量:查看所有系统变量: show [ session | global ] variables ;

                         可以通过like模糊匹配方式直接查找变量:  show [ session | global ] variables like ' ...... ' ;

                         查看指定变量的值: select @@[ session | global ] 系统变量名 ;

 

设置系统变量:set [ session | global ] 系统变量名 = 值 ;  (session是会话级别,不影响其他会话)

                         set @@[ session | global ]系统变量名 = 值 ;

注意:如果没有指定session/global,默认是session,会话变量。

           mysql服务器重新启动之后,所设置的全局参数会失效,要想不失效,可以在/etc/my.cnf中配置。

 

 

2、用户定义变量:是用户根据需要自己定义的变量,用户变量不用提前声明,再用的时候直接用 "@变量名" 使用就可以。其作用域为当前连接。

   赋值:set @var_name = expr [ , @var_name = epr ] ...... ;

             set @var_name := expr [ , @var_name = epr ] ...... ;

             select @var_name := expr [ , @var_name = epr ] ...... ;

             select 字段名 into @var_name from 表名 ;

   使用:select @var_name ;

注意:用户定义的变量无需对其进行声明或初始化,只不过获取到的值为NULL。

 

 

3、局部变量:是根据需要定义的在局部生效的变量,访问之前,需要declare声明,可用作存储过程内的局部变量和参数,局部变量的范围是在其内声明的begin...end块。

   声明: declare 变量名 变量类型 [ default ...... ] ;

变量类型就是数据库字段类型: int、bigint、char、varchar、date、time等。

   赋值:set 变量名 = 值 ;

              set 变量名 := 值 ;

              select 字段名 int 变量名 from 表名 ...... ;

 

 

二、if判断

语法: if  条件1 then

                    ......

            elseif 条件2 then          --可选

                    ......

            else                            --可选

                    ......

            else if ;

 

 

三、参数

in 该参数作为输入,也就是需要调用时传入值  。默认。

out 该参数作为输出,也就是该参数可以作为返回值。

inout 既可以作为输入参数,也可以作为输出参数。

用法: 存储过程名称([ in/out/inout 参数名 参数类型 ])

 

 

四、游标cursor

用来存储查询结果集的数据类型,在存储过程和函数中可以使用游标对结果集进行循环的处理。游标的使用包括游标的声明、open、fetch、close。

声明游标:declare 游标名称 cursor for 查询语句;

 

打开游标:open 游标名称 ;

 

获取游标记录: fetch 游标名称 into 变量 [ , 变量 ] ;

 

关闭游标:close 游标名称 ;

 

标签:存储,变量,......,游标,session,var,过程,name
来源: https://www.cnblogs.com/xiao-wang-tong-xue/p/16480203.html