存储过程
作者:互联网
语法: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