zoukankan      html  css  js  c++  java
  • MySQL使用存储过程

    一、存储过程使用背景

    • 通过把处理封装在容易使用的单元内,简化复杂的操作
    • 不需要反复建立一系列的处理步骤,可以保证数据的完整性。简化了后续人员的使用,减少了错误发生的可能性
    • 简化对变动的管理。如果使用的表名,或者列名,或者其他内容发生变化,只需要更改存储过程,但是使用它的可以不用太过关注

        这玩意如果不好理解的话,可以将存储过程理解成一个Java中的方法

    二、创建存储过程

    创建一个存储过程,用于查询工资的最小值

    create procedure pro_min_salary()
    begin
    select min(salary) as  min_salary from salaries;
    end;

    如果使用MySQL的命令行创建存储过程需要注意分号的处理 ;

    使用call调用存储过程

    call pro_min_salary();

    创建存储过程还可以使用参数,比如

    create procedure pro_all_salary(
    out min_salary decimal(8,2),
    out max_salary decimal(8,2),
    out avg_salary decimal(8,2)
    )
    begin
        select min(salary) into min_salary from salaries;
        select max(salary) into  max_salary from salaries;
        select avg(salary) into  avg_salary from salaries;
    end;

    每个参数必须要指定类型,这个例子中指定了三个接受参数 ,分别是最低工资 min_salary ,最高工资 max_salary,以及平均工资 avg_salary。关键字out指的是的相应的参数是从存储过程中传出的一个值,就是返回给调用者。存储过程的代码位于begin和end之间。在这里他们是一组查询语句,用于检索值保存在相应的变量中。

    OUT 从存储过程中传出

    IN 传递给存储过程

    INOUT对存储过程传入传出

    对于它调用存储过程就变成了

    call pro_all_salary(@min_salary,@max_salary,@avg_salary);

    这里不会有值传出,只是调用了存储过程将值存储在了各自的变量中。在MySQL中所有的变量都得以@符号开始

    这是如果查看变量的话就可以看到结果了

    select @max_salary;

    三、查看存储过程

    查询所有存储过程

    show procedure status ;

    如果要查询某一个存储过程的话,可以使用like

    show procedure status like '%all_%';

    四、删除存储过程

    删除存储过程的话 drop proceduce  存储过程名

    drop procedure aaa;

    这样的话如果存储过程不存在的  就会报错 [42000][1305] PROCEDURE employees.aaa does not exist

    所以最好写成

    drop procedure if exists aaa;
    生于忧患,死于安乐
  • 相关阅读:
    ViewState ASP.NET 的一个特有存储容器
    11个高效的VS调试技巧介绍
    Entity Framework快速入门笔记第四篇—ModelFirst
    最受欢迎的ASP.NET的CMS下载
    在Visual Studio中使用GitHub(使用篇)
    数据库设计范式(转)
    SQL Server2005中的SMO编程
    在SQL Server2005中使用 .NET程序集
    对SMTP协议的一点困惑
    Windows 2003系统负载平衡策略全攻略
  • 原文地址:https://www.cnblogs.com/songlove/p/15585631.html
Copyright © 2011-2022 走看看