zoukankan      html  css  js  c++  java
  • MySQL数据库之存储过程

       

         存储过程简单来说,就是为以后的使用而保存的一条或多条MySQL语句的集合。可将其视为批件,虽然它们的作用不仅限于批处理。在我看来, 存储过程就是有业务逻辑和流程的集合, 可以在存储过程中创建表,更新数据, 删除等等。

    一个简单的存储过程: 

    1. create procedure porcedureName () 
    2. begin 
    3.     select name from user; 
    4. end;  

    存储过程用create procedure 创建, 业务逻辑和sql写在begin和end之间。mysql中可用call porcedureName ();来调用过程。

    删除存储过程

         DROP PROCEDURE IF EXISTS porcedureName; -- 没有括号() 

    在这里,我们还要了解三个特别的字段in,out以及inout的区别:

    1.参数in的使用(代表输入,意思说你的参数要传到存过过程的过程里面去)

    /**
    案例功能:求1-n的和
    */
    delimiter $
    create procedure p1(in n int)
    begin
    declare total int default 0;
    declare num int default 0;
    while num < n do
    set num:=num+1;
    set total:=total+num;
    end while;
    select total;
    end$
    call p1(10)$

    2.参数out的使用(代表往外输出)
    //这里还要注意一点的就是我们的输出参数一定要设置相应类型的初始,否则不管你怎么计算得出的结果都为NULL值
    /**
    案例功能:求1-n的和
    */
    create procedure p2(in n int,out total int)
    begin
    declare num int default 0;
    set total:=0;
    while num < n do
    set num:=num+1;
    set total:=total+num;
    end while;
    end$

    这里我们需要对第二个参数定义一个变量名(更形象点就是你输入一个输入类型的参数n,由输出参数total往外发射输出我们只需要定义一个变量名来接收这个输出值即可)
    call p2(100,@sum)$   //这里的@sum就是我定义用来接收处处total的值
    select @sum$
     
     
     
    总结in、out区别:
    in:表示输入一个值,你需要一个值,我给你一个值
    out:你往外输出一个值,你输出的那个值我就拿一个变量来接收你给我输出的那个值
     
    3.参数inout的使用(既能输入一个值又能传出来一个值)

    /**
    功能:传一个年龄,自动让年龄增长10岁
    */
    create procedure p3(inout age int)
    begin
    set age:=age+10;
    end$

    注意:调用的时候,我这里需要和大家声明一下,inout型的参数值既是输入类型又是输出类型,你给它一个值,值不是变量,不是变量那out的时候它怎么赋给这个值是不是?

    因此我们需要先设置一个变量并初始化这个值,调用的时候直接传这个变量即可。

    set @currentAge=8$
    call p3(@currentAge)$
    select @currentAge$

    ————————————————
    版权声明:本文为CSDN博主「yuefeicall」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/yuefeicall/article/details/78803287

  • 相关阅读:
    【C++】资源管理
    【Shell脚本】逐行处理文本文件
    【算法题】rand5()产生rand7()
    【Shell脚本】字符串处理
    Apple iOS产品硬件参数. 不及格的程序员
    与iPhone的差距! 不及格的程序员
    iPhone游戏 Mr.Karoshi"过劳死"通关. 不及格的程序员
    XCode V4 发布了, 苹果的却是个变态. 不及格的程序员
    何时readonly 字段不是 readonly 的?结果出呼你想象!!! 不及格的程序员
    object file format unrecognized, invalid, or unsuitable Command 不及格的程序员
  • 原文地址:https://www.cnblogs.com/kuaileya/p/11897619.html
Copyright © 2011-2022 走看看