mysql 方法和存储过程

变量

  • 局部变量:declare:|用户可以使用DECLARE关键字来定义变量。然后可以为变量赋值。这些变量的作用范围是BEGIN…END程序段中
  • 用户变量:@变量名:eg:@a 定义用户变量,作用域在整个链接
  • 会话变量:在每次连接成功后会将全局变量拷贝一份到当前回话:set session var_name = value; show variables like “autocommit”;
  • 全局变量: set global var_name = value;

https://www.cnblogs.com/gavin110-lgy/p/5772577.html

存储过程

delimiter $$
drop procedure if exists create_data_for_test2;
create procedure create_data_for_test2(in num int,out total int)
begin
    declare count int default 0;
	declare batch_num int default 0;
    dd:loop
		START TRANSACTION;--手动提交事务,提高效率
		batch:loop
			insert into test2(b,c,d,e) values(round(rand()*10),round(rand()*10),round(rand()*10),round(rand()*count));
			set count=count+1;
			set batch_num:=batch_num+1;
			if count>=num then 
				leave dd;
			end if;
			if batch_num>=10 then
				commit;
				set batch_num=0;
				leave batch;
			end if;
		end loop batch;
    end loop dd;
	commit;
    select count(*) into total from test2;
end;$$
delimiter ;


show procedure status;
drop procedure create_data;

函数

delimiter $$
create function get_b_by_a(a1 int)
    returns int
    begin
        declare b_test2 int default 0;
        select b into b_test2 from test2 where a=a1;
        return b_test2;
    end$$ 
delimiter ;
show function status\G;

函数和存储过程的区别

  • 返回值上的不同:函数将向调用者返回一个且仅返回一个结果值;存储过程将返回一个或多个结果集,或者无返回值
  • 调用方式上的不同:函数嵌入在sql中使用的,可以在select中调用;存储过程只能通过call语句进行调用
  • 参数的不同:存储函数的参数类型类似于IN参数;存储过程的参数类型有三种、IN参数、OUT参数、INOUT参数
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值