标签:log 特点 arc stun 部分 服务 好处 个数 编号
CREATE procedure 存储过程名(参数列表) begin 存储过程体(一组合法的SQL语句) end
例如
in stuname varchar(20) 参数模式 in 进口:作为输入,需要调用者传入值 out 出口:作为输出,返回值 inout 进出口:既可以输入,又可以输出。既需要传入值,又能返回值
例如:
delimiter $(SQLyog 不支持,需要在SQL客户端dos窗口中使用)
CREATE TABLE admin( id INT, username VARCHAR(20), password INT )
#案例:插入到admin表中五条记录 #1.结束标记的设置 delimiter $ #2.创建存储过程函数 CREATE PROCEDURE myp1() BEGIN INSERT INTO admin(username,password) VALUES(‘join1‘,‘0000‘),(‘lily‘,‘0000‘)(‘rose‘,‘0000‘)(‘jack‘,‘0000‘)(‘tom‘,‘0000‘); END $ #3.调用 CALL myp1()$;
#案例1:创建存储过程实现根据女神名,查询对应的男神信息 CREATE PROCEDURE myp2(IN beautyname VARCHAR(20)) BEGIN SELECT bo.* FROM boys bo RIGHT JOIN beauty b ON bo.id=b.boyfriend_id WHERE b.`name`=beautyname; END $;
CALL myp2(‘桥本环奈‘)$;
#案例2:创建存储过程实现,用户是否登录成功(传入用户名密码)
/*
SELECT 查询列表,查询列表,查询列表 INTO 变量名,变量名,变量名
就是把查询的东西赋值给变量
*/
CREATE PROCEDURE myp3(IN username VARCHAR(20),IN PASSWORD VARCHAR(20)) BEGIN DECLARE result VARCHAR(20) DEFAULT‘‘; #声明并初始化 SELECT COUNT(*) INTO result FROM admin WHERE admin.username=username AND admin.`password`=`password`; /* 把查询的内容赋值个变量result 查询admin全部的内容 当表中的名字和变量的名字密码都相同 */ SELECT result;#使用 END $ #调用 CALL myp3(‘张飞‘,8888)$; CREATE PROCEDURE myp4(IN username VARCHAR(20),IN PASSWORD VARCHAR(20)) BEGIN DECLARE result INT DEFAULT 0; SELECT COUNT(*) INTO result FROM admin WHERE admin.username=username AND admin.`password`=`password`; SELECT IF(result>0,‘成功‘,‘失败‘); END $ #调用 CALL myp3(‘张飞‘,8888)$; CREATE PROCEDURE myp5(IN username VARCHAR(20),IN PASSWORD VARCHAR(20)) BEGIN DECLARE result VARCHAR(20) DEFAULT‘‘; #声明并初始化 SELECT COUNT(*) INTO result FROM admin WHERE admin.username=username AND admin.`password`=`password`; SELECT IF(result>0,‘成功‘,‘失败‘); END $
#案例:带一个返回值的 #根据对应的女神名返回对应的男神名 delimiter $ CREATE PROCEDURE myp6(IN beautyname VARCHAR(20),OUT boyName VARCHAR(20)) BEGIN SELECT bo.boyName INTO boyName FROM boys bo JOIN beauty b ON bo.id=b.boyfriend_id WHERE bo.boyName=b.`name`; END $ #调用 #1.先创建一个变量 SET @bname;(可以不写直接使用) CALL myp6(‘桥本环奈‘,@bname)$ SELECT @bname$
#案例:根据女神名,返回对应的男神名和男神魅力值
delimiter $ CREATE PROCEDURE myp7(in beautyname VARCHAR(20),OUT boyname VARCHAR(20),OUT userCP INT) BEGIN SELECT bo.boyName,bo.userCP INTO boyName,userCP FROM boys bo INNER JOIN beauty b ON bo.id=b.boyfriend_id WHERE b.`name`=beautyname; END$ CALL myp7(‘柳岩‘,@bname,@usercp);$
#案例:传入a和b两个值,最终a和b都翻倍并返回值 delimiter $ CREATE PROCEDURE myp8(INOUT a INT,INOUT b INT) BEGIN SET a=a*2; SET b=b*2; END$ #调用 /* 不能直接调用,也不能放常量值,ab的返回值就找不到了。所以需要穿给两个有值的变量 */ #先定义两个用户变量 SET @m=10$ SET @n=20$ #将两个用户变量赋值给ab,并且接受返回值 CALL myp8(@m,@n)$ #既输入又输出 #查询 SELECT m,n$
DROP PROCEDURE myp;
DESC myp2;#查看不了,只能对表使用
SHOW CREATE PROCEDURE myp7;
CREATE PROCEDURE myp7(in beautyname VARCHAR(20),OUT boyname VARCHAR(20),OUT userCP INT)这句的特点
#1.创建存储过程实现传入用户名和密码,插入到admin表中 CREATE PROCEDURE test_pro1(IN username VARCHAR(20),IN loginPwd VARCHAR(20)) BEGIN INSERT INTO admin(admin.username,PASSWORD) VALUES(username,loginPwd); END$ #2.创建存储过程或函数实现传入女神编号,返回女神姓名和女神电话 CREATE PROCEDURE test_pro2(IN id INT,OUT name VARCHAR(20),OUT phone VARCHAR(20)) BEGIN SELECT b.name,b.phone INTO name,phone FROM beauty b WHERE b.id=id; END $ #3.创建存储过程或函数实现传入两个女神的生日,返回大小 CREATE PROCEDURE test_pro3(IN birth1 datetime,IN birth2 datetime,OUT result INT) BEGIN SELECT DATEDIFF(birth1,birth2) INTO result; END $ #4.创建存储过程或函数实现传入一个日期,格式化成xx年xx月xx日并返回 /* 日期转文本 DATE_FORMAT 文本转日期 STR_TO_DATE */ CREATE PROCEDURE test_pro4(IN mydate datetime,OUT serDate VARCHAR(50)) BEGIN SELECT DATE_FORMAT(mydate,‘%y年%m月%d日‘) INTO serDate; END $ CALL test_pro4(now(),@str)$ SELECT @str$ #5.创建存储过程或函数实现传入女神名称,返回 女神 and 男神 格式的字符串 CREATE PROCEDURE test_pro5(IN beautyname VARCHAR(20),OUT str VARCHAR(50)) BEGIN SELECT CONCAT(beautyname,‘and‘,IFNULL(boyName,‘null‘))INTO str FROM boys bo RIGHT JOIN beauty b ON b.boyfriend_id=bo.id WHERE b.name=beautyname; END $ CALL test_pro5(‘柳岩‘,@str)$ SELECT @str$ #6.创建存储过程或函数,更具传入的条目数和起始索引,查询beauty表的记录 CREATE PROCEDURE test_pro6(IN startindex INT,IN size INT) BEGIN SELECT * FROM beauty LIMIT startindex,size; END $ CALL test_pro6(3,5)$
标签:log 特点 arc stun 部分 服务 好处 个数 编号
原文地址:https://www.cnblogs.com/rijiyuelei/p/12382119.html