lyt经典版MySQL基础——存储过程
时间:2021-07-01 10:21:17
帮助过:11人阅读
#存储过程
2 /*
3 存储过程:类似于java中的方法
4 好处:
5 1、提高代码的重用性
6 2、简化操作
7
8 */
9 #存储过程
10 /*
11 含义:一组预先编译好的SQL语句的集合,理解成批处理语句
12 1、提高代码的重用性
13 2、简化操作
14 3、减少了编译次数并且减少了和数据库服务器的连接次数,提高了效率
15
16 */
17
18 #一、创建语法
19 /*
20 create procedure 存储过程名(参数列表)
21 begin
22 存储过程体(一组合法的SQL语句)
23 end
24
25 注意:
26 1、参数列表包含三部分
27 参数模式 参数名 参数类型
28 举例:
29 in stuname varchar(20)
30
31 参数模式:
32 in :该参数可以作为输入,也就是该参数需要调用方传入值
33 out :该参数可以作为输出,也就是该参数可以作为返回值
34 inout :该参数既可以作为输入又可以作为输出,也就是该参数既需要传入值,又可以返回值
35
36 2、如果存储过程体仅仅只有一句话,begin end 可以省略
37 存储过程体中的每条SQL语句的结尾要求必须加分号。
38 存储过程的结尾可以使用 delimiter 重新设置
39 语法:
40 delimiter 结束标记
41
42 delimiter $
43
44
45 #二、调用语法
46 call 存储过程名(实参列表);
47 */
48
49 #
1.空参列表
50 #案例:插入到admin表中五条记录
51 DELIMITER $
52 CREATE PROCEDURE myp1()
53 BEGIN
54 INSERT INTO admin(username,PASSWORD)
VALUES(
‘john1‘,
‘0000‘),(
‘lily‘,
‘0000‘),(
‘lucy‘,
‘0000‘),(
‘lily‘,
‘0000‘),(
‘rose‘,
‘0000‘),(
‘lily‘,
‘0000‘),(
‘tom‘,
‘0000‘),(
‘lily‘,
‘0000‘);
55 END $
56 #调用
57 CALL myp1()$
58
59 #
2.创建带in模式参数的存储过程
60 #案例1:创建存储过程时间 根据女神名,查询对应的男神信息
61 DELIMITER $
62 CREATE PROCEDURE myp2(
IN beautyName
VARCHAR(
20))
63 BEGIN
64 SELECT bo.
*
65 FROM boys bo
RIGHT JOIN beauty b
ON bo.id
=b.boyfriend_id
66 WHERE b.name
=beautyName;
67 END $
68 #调用
69 CALL myp2(
‘柳岩‘)$
70 CALL myp2(
‘小昭‘)$
71
72 #案例2:创建存储过程实现,用户是否登录成功
73 DELIMITER $
74 CREATE PROCEDURE myp4(
IN username
VARCHAR(
20),
IN PASSWORD
VARCHAR(
20))
75 BEGIN
76 DECLARE result
INT DEFAULT 0; #声明并初始化
77
78 SELECT COUNT(
*)
INTO result #赋值
79 FROM admin
80 WHERE admin.username
=username
81 AND admin.password
=PASSWORD;
82
83 SELECT IF(result
>0,
‘成功‘,
‘失败‘); #使用
84
85 END $
86 #调用
87 CALL myp4(
‘张飞‘,
‘9999‘) $
88
89 #
3.创建带out模式的存储过程
90 #案例1:根据女神名,返回对应的男神名
91 CREATE PROCEDURE myp5(
IN beautyName
VARCHAR(
20),OUT boyName
VARCHAR(
20))
92 BEGIN
93 SELECT bo.boyName
INTO boyName
94 FROM boys bo
INNER JOIN beauty b
ON bo.id
=b.boyfriend_id
95 WHERE b.name
=beautyName;
96 END$
97 #调用
98 CALL myp5(
‘小昭‘,
@bName)$
99 SELECT @bName$
100
101 #案例2:根据女神名,返回对应的男神名和男生魅力值
102 DELIMITER $
103 CREATE PROCEDURE myp6(
IN beautyName
VARCHAR(
20),OUT boyName
VARCHAR(
20),OUT userCP
INT)
104 BEGIN
105 SELECT bo.boyName,bo.userCP
INTO boyName,userCP
106 FROM boys bo
INNER JOIN beauty b
ON bo.id
=b.boyfriend_id
107 WHERE b.name
=beautyName;
108 END$
109 #调用
110 CALL myp6(
‘小昭‘,
@bName,
@ucp)$
111 SELECT @bName,
@ucp$
112
113 #
4.创建带inout模式参数的存储过程
114 #案例1:传入a和b两个值,最终a和b都翻倍并返回
115 DELIMITER $
116 CREATE PROCEDURE myp8(INOUT a
INT,INOUT b
INT)
117 BEGIN
118 SET a
=a
*2;
119 SET b
=b
*2;
120 END$
121 #调用
122 SET @m=10$
123 SET @n=20$
124 CALL myp8(
@m,
@n)$
125 SELECT @m,
@n$
126
127 DELIMITER;
128 #二、删除存储过程
129 #语法:
drop procedure 存储过程名
130 DROP PROCEDURE myp1;
131 DROP PROCEDURE myp2,myp3; #x
132
133 #三、查看存储过程的信息
134 DESC myp2; #x
135 SHOW
CREATE PROCEDURE myp2;
lyt经典版MySQL基础——存储过程
标签:数据库服务器 bsp sql rop 举例 mysq 用户 arch 批处理