MySQL--带有out的存储过程

带有out 的存储过程,同样可以返回一个值,也可以返回多个值

下面分别进行介绍

案例一:根据女神名,返回对应的男神名

复制代码
 1 delimiter $
 2 create PROCEDURE myp7(in beautyName VARCHAR(20),out boyName VARCHAR(20))
 3 begin 
 4         select bo.boyName into boyName
 5         from boys bo
 6         INNER JOIN beauty b on bo.id=b.boyfriend_id
 7         where b.name=beautyName;
 8 end $
 9 #调用
10 #set @bName$  #其实这个定义用户变量过程是不用写的,直接按照下面调用的写法就行
11 call myp7('小昭',@bName)$
12 select @bName$
复制代码

这里我要强调一点就是,在使用dos窗口执行存储过程的时候,我的电脑也不知道是怎么搞的,始终不能粘贴内容,有时候及时粘贴进去内容之后,回车执行的时候,总是出现mysql->   就好像还让你输入下一行了。这里,我推荐大家使用navicat,在navicat中打开命令执行窗口,同样能够看到我们想要的效果,同时我们也不用再手动的设置字符集的编码格式了,方便多了。

下面是运行结果:

 案例二:根据女神名,返回对应的男神名和魅力值

复制代码
 1 delimiter $
 2 create PROCEDURE     myp8(in beautyName VARCHAR(20),out boyName VARCHAR(20),out userCP INT)
 3 begin
 4         select bo.boyName,bo.userCP into boyName,userCP
 5         from boys bo
 6         INNER JOIN beauty b on bo.id=b.boyfriend_id
 7         where b.name=beautyName;
 8 end $
 9 
10 #调用
11 call myp7('小昭',@bName)$
12 select @bName,@userCP$
复制代码

运行结果:

复制代码
 1 mysql> delimiter $
 2 create PROCEDURE     myp8(in beautyName VARCHAR(20),out boyName VARCHAR(20),out userCP INT)
 3 begin
 4         select bo.boyName,bo.userCP into boyName,userCP
 5         from boys bo
 6         INNER JOIN beauty b on bo.id=b.boyfriend_id
 7         where b.name=beautyName;
 8 end $
 9 Query OK, 0 rows affected (0.00 sec)
10 mysql> call myp7('小昭',@bName)$
11 Query OK, 1 row affected (0.00 sec)
12 
13 mysql> select @bName$,@userCP$
14 +--------+
15 | @bName |
16 +--------+
17 | 张无忌 |
18 +--------+
19 1 row in set (0.06 sec)
20 
21 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '@userCP' at line 1
22 mysql> call myp7('小昭',@bName,@userCP)$
23 1318 - Incorrect number of arguments for PROCEDURE girls.myp7; expected 2, got 3
24 mysql> call myp8('小昭',@bName,@userCP)$
25 Query OK, 1 row affected (0.00 sec)
26 mysql> select @bName$,@userCP$
27 +--------+
28 | @bName |
29 +--------+
30 | 张无忌 |
31 +--------+
32 1 row in set (0.05 sec)
33 
34 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '@userCP' at line 1
35 mysql> SELECT @userCP$
36 +---------+
37 | @userCP |
38 +---------+
39 |     100 |
40 +---------+
41 1 row in set (0.06 sec)
42 
43 mysql> SELECT @bName,@userCP$
44 +--------+---------+
45 | @bName | @userCP |
46 +--------+---------+
47 | 张无忌 |     100 |
48 +--------+---------+
49 1 row in set (0.06 sec)
50 
51 mysql> 
复制代码

 

posted on   ~码铃薯~  阅读(2859)  评论(0编辑  收藏  举报

编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示