mysql 存储过程
Posted Anec
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql 存储过程相关的知识,希望对你有一定的参考价值。
mysql存储过程
首先 先了解存储过程用法:
-- 不带参数的存储过程: 创建存储过程 DELIMITER // CREATE PROCEDURE text01() #创建存储过程名字 BEGIN SELECT * FROM infolist; #需要执行的操作 END // DELIMITER ; -- 使用存储过程 call text01 #使用这个存储过程 没有注解得是固定格式.
-- 带传入参数存储过程(in 参数): -- 创建存储过程 DELIMITER // CREATE PROCEDURE text02(in num int) #依旧是创建存储过程的名字,但是在括号 in关键字 变量名 变量类型 BEGIN SELECT * FROM infolist where id=num; #执行的操作 END // DELIMITER ; -- 使用存储过程 set @num=2 #定义变量 call text02(@num) #将变量传入到存储过程中
-- 带传入参数存储过程(out 参数) delimiter // create procedure text03(out mydata int) #out关键字 定义变量mydata 整型 begin select id into mydata from infolist where id=1; #将id 传递(into)给变量mydata end // delimiter ; -- 使用存储过程 set @num = 0; call text03(@num); select @num;
-- 带传入参数存储过程(inout 参数) delimiter // create procedure text04(inout num int) begin set num := num *50; end // delimiter ; --使用存储过程 set @num = 177; call text04(@num); select @num;
应用场景:
我现在有一台主机,一台主机内有两个内存条 我已经获取到了主机的信息.
现在已经建立了 主机表 以及内存表,其中内存表有一个外键指向主机ID
我现在要插入主机数据,同时增加主机表信息,以及内存表信息.
# 存储过程定义 delimiter // create procedure t1_add_t2(in t1_name varchar(255),in t2_name varchar(255)) begin insert into t1(name) values(t1_name); insert into t2(name,t1_id) VALUes(t2_name,LAST_INSERT_ID()); end // delimiter ; # 使用存储过程 set @t1_name = ‘anec‘; set @t2_name = ‘school_master‘; call t2_add_t1(@t1_name,@t2_name);
删除存储过程:
删除存储过程 drop procedure 存储过程名;
查看有哪些存储过程
# 查看有哪些存储过程 show procedure status;
mysql 内置系统函数:
row_count() #得到操作行数
row_count(); 得到操作行数。(单独用没用) 例子:插入数据 INSERT test(username) VALUES(‘A‘),(‘B‘),(‘C‘); SELECT ROW_COUNT(); //返回被插入的记录总数 结果为3
last_insert_id() #返回 最后一次插入自增列的id
select LAST_INSERT_ID();
以上是关于mysql 存储过程的主要内容,如果未能解决你的问题,请参考以下文章