Mysql--存储过程

Mysql--存储过程

介绍

存储过程是事先经过编译并存储在数据库中的一段SQL语句的集合,调用存储过程可以简化应用开发人员的很多工作,减少数据在数据
库和应用服务器之间的传输,对于提高数据处理的效率是有好处的。
存储过程思想上很简单,就是数据库SQL语言层面的代码封装与重用。

特点

  • 封装,复用
  • 可以接收参数,也可以返回数据
  • 减少网络交互,效率提升

存储过程

image-20231029112750672

创建

# 创建
create procedure p1()
begin
    select count(*) from emp;
end ;

调用

 call p1();

查看和删除

image-20231029113722757

查看

select *from information_schema.ROUTINES where ROUTINE_SCHEMA='hrm';
# 第二种方式
show create procedure p1;

删除

drop procedure if exists p1;

命令行中执行存储过程

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

需要设置SQL语句的结束符号

delimiter $$;
begin
    select count(*) from emp;
end $$

变量

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

image-20231029114940540

查看系统变量

# 不指定默认是session级别
 show session variables ;
show global variables ;
show global variables like 'auto%';
show session variables like 'auto%';
select @@autocommit;
select @@session.autocommit;
select @@global.autocommit;

设置系统变量

set session autocommit =0;
select @@autocommit;
insert into dept values (60,'小黑','济南');
commit ;

注意:
如果没有指定SESSION/GLOBAL,默认是SESSION,会话变量。
mysql服务重新启动之后,所设置的全局参数会失效,要想不失效,可以在/etc/my.cnf中配置。

用户自定义变量

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

image-20231029121052767

# 用户自定义变量
# 赋值
set @myname='小黑';
# 推荐使用:=来赋值
set @myage:=10;
set @mygender :='男',@myhobby:='java';
select @mycolor:='red';
select count(*) into @mycount from emp;
# 使用
select @myname,@myage,@mygender,@myhobby;
select @mycount;
select @mycolor;

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

select @abc;
posted @ 2023-10-29 12:17  harper886  阅读(6)  评论(0编辑  收藏  举报