首页 > 数据库 >MySql存储过程

MySql存储过程

时间:2022-11-30 18:44:16浏览次数:40  
标签:存储 set end -- result MySql 过程 select

定义存储过程格式:
create procedure 存储过程名(参数)
begin
  ...
  select 要返回的内容;
end;

1 定义一个简单的存储过程
create procedure test()
begin
	select * from specialty;
end;
call test;

create procedure test1()
begin 
	-- declare定义变量
	declare s_count int default 0 ;
	declare s_result varchar(100);
	-- select直接加内容表示返回,存储过程遇到第一个select直接加内容就直接返回了,不会执行后边的语句
	#select s_count+10;
	-- set为变量赋值
	set s_count = 100;
	-- 使用into将查询结果赋值给变量
	select count(1) into s_count from specialty;
	if s_count > 5 then
		set s_result = '个数大于5';
	else
		set s_result = '个数不大于5';
	end if;
	select s_result;
end;
call test1();

-- 创建带有参数的存储过程,如果写了参数,则调用时必须 传递
	-- 参数类型【in】:输入参数,默认类型。注意,in参数是只读的,就是说即使在存储过程中改变了in类型参数的值,存储过程结束后仍保留期原始值
create procedure test2(in flag tinyint)
begin
	declare result varchar(100);
	if flag=0 then
		set result = '假';
	else 
		set result = '真';
	end if;
	select result,flag;
end;
call test2(true);
	-- 参数类型【out】:输出参数,可以作为返回值。注意,存储过程在启动时无法访问out参数的初始值
create procedure test3(in flag tinyint, out result varchar(20))
begin
	-- 因为无法访问out类型的result初始值,所以这个条件永远不会满足
	if flag=0 and result='a' then
		set result = '假的';
	else 
		set result = '真';
	end if;
	select result;
end;
set @a := 'a';
call test3(false,@a);
select @a;

	-- 参数类型【inout】存储过程可以修改INOUT参数也可以获取其初始值并将新值传递回调用程序
create procedure test4(inout result varchar(10))
begin 
	if result = 'a' then
		set result = 'aaa';
	else
		set result = 'bbb';
	end if;
end;
set @a := 'b';
call test4(@a);
select @a;

-- 创建一个存储过程,根据月份判断季度
create procedure judgmentQuarter(in month int, out quarter varchar(10))
begin
	case
		when month >= 1 and month <=3 then
			set quarter = '第一季度';
		when month >= 4 and month <= 6 then
			set quarter = '第二季度';
		when month >= 7 and month <= 9 then
			set quarter = '第三季度';
		else
			set quarter = '第四季度';
	end case;
end;
call judgmentQuarter(12,@quarter);
select @quarter;

-- 删除存储过程
drop procedure test3;
-- 查看存储过程的创建语句
show create procedure test1;
-- 查看shixun数据库的所有存储过程
select name from mysql.proc where db='shixun';
-- 查看存储过程的状态信息
show procedure status;

标签:存储,set,end,--,result,MySql,过程,select
From: https://www.cnblogs.com/ccx-lly/p/16939408.html

相关文章

  • MySQL ERROR 1227 (42000)错误处理
    在还原数据库的时候,遇到以下报错:ERROR1227(42000)atline18:Accessdenied;youneed(atleastoneof)theSUPER,SYSTEM_VARIABLES_ADMINorSESSION_VARIABLES......
  • MySQL高级SQL语句(二)
    表连接查询MYSQL数据库中的三种连接innerjoin(内连接):只返回两个表中联结字段相等的行(有交集的值)leftjoin(左连接):返回包括左表中的所有记录和右表中联结字段相等的......
  • MySQL数据库--存储过程
    简介MysQL数据库存储过程是一组为了完成特定功能的SQL语句的集合 存储过程这个功能是从5.0版本才开始支持的,它可以加快数据库的处理速度,增强数据库在实际应用中的灵活......
  • MYSQL高级语句二
    一、VIEW(视图)1、概念可以被当作是虚拟表或存储查询视图跟表格的不同是,表格中有实际储存资料,而视图是建立在表格之上的一个架构,它本身并不实际储存资料。临时表在用户......
  • datax-web同步mysql数据中文乱码问题
    在同步数据的时候中文乱码首先看看俩数据库字符集是否相同是不是utf8如果确认没有问题之后打开刚才的任务在连接mysql的后面加上 ?useUnicode=true&characterEncoding=u......
  • mysql设置了时区,但时间还是utc时间
    最近项目部署后,使用时发现某个时间字段保存的是utc时间,分享一下一步步排除的步骤。第一步前端:前端用的是vue和elementPlus的组件,使用了date-picker这个组件,发现提......
  • 焱融科技为国家重点实验室打造海量高性能存储
    中国科学院大气物理研究所大气科学和地球流体力学数值模拟国家重点实验室(英文缩写LASG)是国家级重点实验室。LASG主要研究方向为地球气候系统模式的研发与应用;天气气候动力......
  • Mysql使用指南
    创建数据库createdatabasedatabase_name;查看已有数据库showdatabases;支持汉字ALTERDATABASEdatabase_nameCHARACTERSETUTF8;切换进入数据库usedataba......
  • 1、Vue3的Vite独立使用一个variables.less文件存储全局less变量
    Vue3采用Vite构建了,如何在项目中使用独立的一个less变量文件存储全局less变量呢?1)引入less和less-load npmilessless-load--save2)修改vite.config.js其中重要的......
  • MYSQL错误: SQL 错误 [1366] [HY000]: Incorrect string value: '\xE4\xB8\xAD\xE5
    错误信息:Incorrectstringvalue:'\xE4\xB8\xAD\xE5\x9B\xBD'forcolumn'home_country  修改表、字段字符集#修改表字符集altertableuser_infodefaultchar......