• 技术文章 >数据库 >mysql教程

    归纳整理MySQL存储过程参数的用法及说明

    WBOYWBOY2022-08-18 20:45:02转载574
    本篇文章给大家带来了关于mysql的相关知识,主要介绍了MySQL存储过程参数的用法及说明,MySQL存储过程的参数共有三种:IN、OUT 、INOUT,下面一起来看一下,希望对大家有帮助。

    php入门到就业线上直播课:进入学习

    推荐学习:mysql视频教程

    MySQL存储过程的参数

    MySQL存储过程的参数共有三种:

    输入参数

    细节注意:下面的存储过程创建会报错,他的类型以及类型长度需要和创建表字段的类型和类型长度一致

    -- 创建一个存储过程:添加一个员工信息
    DELIMITER $$
    CREATE PROCEDURE procedure_test4(IN `p_name` VARCHAR,IN `p_call` VARCHAR)
    BEGIN
      INSERT INTO employees(`name`,`call`)
      VALUES(`p_name`,`p_call`);
    END $$

    正确写法

    -- 创建一个存储过程:添加一个员工信息
    DELIMITER $$
    CREATE PROCEDURE procedure_test4(IN `p_name` VARCHAR(64),IN `p_call` VARCHAR(64))
    BEGIN
      INSERT INTO employees(`name`,`call`)
      VALUES(`p_name`,`p_call`);
    END $$

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jrDYIwVa-1640232786855)(C:/Users/15014/AppData/Roaming/Typora/typora-user-images/image-20211223112719116.jpg)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hcw4KheE-1640232786856)(C:/Users/15014/AppData/Roaming/Typora/typora-user-images/image-20211223112002450.jpg)]

    现在来测试一下是否可以调用存储过程并且添加数据进去

    先看一下表原来的数据

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tFaNe9UZ-1640232786856)(C:/Users/15014/AppData/Roaming/Typora/typora-user-images/image-20211223113244925.jpg)]

    调用一下存储过程

    CALL procedure_test4('李四','321321')

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-R7FXE03S-1640232786857)(C:/Users/15014/AppData/Roaming/Typora/typora-user-images/image-20211223113313119.jpg)]

    再来看一下结果

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-L5L5sTMe-1640232786858)(C:/Users/15014/AppData/Roaming/Typora/typora-user-images/image-20211223113351902.jpg)]

    输出参数

    例子:

    -- 创建一个存储过程:根据id查询出该员工姓名
    DELIMITER $$
    CREATE PROCEDURE procedure_test5(IN `p_id` INT(64),OUT `p_name` VARCHAR(64))
    BEGIN
      SELECT `name` INTO `p_name` FROM employees WHERE id=`p_id`;
    END $$

    创建没问题,接下来调用测试一下

    SET @e_name=''
    CALL procedure_test5('2',@e_name)
    SELECT @e_name FROM DUAL

    输入输出参数(INOUT)

    -- INOUT(输入输出参数)
    DELIMITER $$
    CREATE PROCEDURE procedure_test6(INOUT str VARCHAR(64))
    BEGIN
      -- 把你传进来的值作为条件,查询出的结果再重新赋值给 str 返回出去
      -- 这里的 str 既当输入参数,也当输出参数
      SELECT `name` INTO str FROM employees WHERE id=str;
    END $$

    创建没问题,接下来测试一下

    SET @e_name='2'
    CALL procedure_test6(@e_name)
    SELECT @e_name FROM DUAL

    也是没问题的,但在实际开发中 INOUT 建议少用,原因:代码的可读性会变差

    推荐学习:mysql视频教程

    以上就是归纳整理MySQL存储过程参数的用法及说明的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:脚本之家,如有侵犯,请联系admin@php.cn删除

    千万级数据并发解决方案(理论+实战):点击学习

    Mysql单表千万级数据量的查询优化与性能分析

    Mysql主从原理及其在高并发系统中的应用

    专题推荐:mysql
    上一篇:MySQL中的流式查询及游标查询方式(总结分享) 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • ❤️‍🔥共22门课程,总价3725元,会员免费学• ❤️‍🔥接口自动化测试不想写代码?• mysql函数的作用是什么• 怎么解决mysql服务无法启动1069• mysql的case when怎么用• 怎么解决1045无法登录mysql服务器• 归纳总结之MySQL数据库子查询语法规则
    1/1

    PHP中文网