zoukankan      html  css  js  c++  java
  • 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> 
  • 相关阅读:
    PHP 中 parent、self、static、$this 的区别 & 后期静态绑定详解
    PHP中for和foreach背后发生了什么和关于迭代器的理解
    PHP中this,self,parent三个关键字
    PHP文件指针操作
    php中Session使用方法详解
    关于PHP日期时间的主要函数
    php获取checkbox复选框的多个选项的内容
    PHP中的11个魔术方法总结:__construct,、__destruct、__call等
    PHP类的自动加载机制实现方法分析
    C#学习笔记(二)
  • 原文地址:https://www.cnblogs.com/dongyaotou/p/12363308.html
Copyright © 2011-2022 走看看