zoukankan      html  css  js  c++  java
  • MySQL存储过程实践

    对employees数据库建立存储过程

    创建不含有输入输出变量的存储过程

    DELIMITER // -- 设定语句结束分隔符
    DROP PROCEDURE IF EXISTS GetEmployees; -- 如果该存储过程已经存在,则删除
    CREATE PROCEDURE GetEmployees ( ) -- 创建不含有输入输出变量的存储过程
    BEGIN
        SELECT
            * 
        FROM
            employees 
        LIMIT 3;
        
    END // 
    DELIMITER ; -- 重新设定语句结束分隔符,每次查询结束后都要将分隔符还原为;

    创建带有一个输出变量的存储过程

    DELIMITER // -- 设定语句结束分隔符
    DROP PROCEDURE IF EXISTS GetTotalNum; -- 如果该存储过程已经存在,则删除
    
    CREATE PROCEDURE GetTotalNum (OUT TotalNum INT )  -- 创建带有输出变量的存储过程
    BEGIN
        SELECT
            count( * ) INTO TotalNum 
        FROM
            dept_emp;
        
    END // 
    DELIMITER ;-- 重新设定语句结束分隔符,每次查询结束后都要将分隔符还原为;

    创建带有多个输出变量的存储过程 

    DELIMITER // -- 设定语句结束分隔符
    DROP PROCEDURE IF EXISTS GetSalary; -- 如果该存储过程已经存在,则删除
    
    CREATE PROCEDURE GetSalary ( OUT salaryhigh INT, OUT salarylow INT, OUT salaryavg INT )  -- 创建不含有输入输出变量的存储过程
    BEGIN
        SELECT
            Max( salary ) INTO salaryhigh 
        FROM
            salaries;
            
        SELECT
            Min( salary ) INTO salarylow 
        FROM
            salaries;
            
        SELECT
            Avg( salary ) INTO salaryavg 
        FROM
            salaries;
        
    END // 
    DELIMITER; -- 重新设定语句结束分隔符,每次查询结束后都要将分隔符还原为;

    创建带有输入输出变量的存储过程

    DELIMITER // -- 设定语句结束分隔符
    DROP PROCEDURE IF EXISTS GetNumEachDept; -- 如果该存储过程已经存在,则删除
    CREATE PROCEDURE GetNumEachDept ( IN dept CHAR(10), OUT NumDept INT )  -- 创建带有输入输出变量的存储过程
    BEGIN
        SELECT
            count( * ) INTO NumDept 
        FROM
            dept_emp 
        WHERE
            dept_no = dept;
        
    END// 
    DELIMITER; -- 重新设定语句结束分隔符,每次查询结束后都要将分隔符还原为;

    调用存储过程

    CALL GetEmployees();
    
    CALL GetSalary (@SalaryHigh, @SalaryLow, @SalaryAvg);
    SELECT @Salaryhigh, @Salarylow, @Salaryavg;
    
    CALL GetNumEachDept ( 'd004', @NumDept );
    SELECT @NumDept;
    
    CALL GetTotalNum(@TotalNum);
    SELECT @TotalNum;

    运行结果:

    emp_no   birth_date    first_name  last_name  gender   hire_date
    10001    1953-09-02    Georgi      Facello      M      1986-06-26
    10002    1964-06-02    Bezalel     Simmel       F      1985-11-21
    10003    1959-12-03    Parto       Bamford      M      1986-08-28
    
    @Salaryhigh  @Salarylow   @Salaryavg
    158220        38623            63811
    
    @NumDept
    73485
    
    @TotalNum
    331603
    CALL GetEmployees()
    > OK
    > 时间: 0s
    
    CALL GetSalary (@SalaryHigh, @SalaryLow, @SalaryAvg)
    > OK
    > 时间: 2.467s
    
    SELECT @Salaryhigh, @Salarylow, @Salaryavg
    > OK
    > 时间: 0s
    
    CALL GetNumEachDept ( 'd004', @NumDept )
    > OK
    > 时间: 0.03s
    
    SELECT @NumDept
    > OK
    > 时间: 0s
    
    CALL GetTotalNum(@TotalNum)
    > OK
    > 时间: 0.07s
    
    SELECT @TotalNum
    > OK
    > 时间: 0s
  • 相关阅读:
    【模式识别与机器学习】——4.3离散K-L变换
    【模式识别与机器学习】——4.2特征选择
    【模式识别与机器学习】——4.1模式分类可分性的测度
    【模式识别与机器学习】——3.10决策树
    【模式识别与机器学习】——3.9势函数法:一种确定性的非线性分类方法
    【模式识别与机器学习】——3.8可训练的确定性分类器的迭代算法
    Android Appliction 使用解析
    Android Service 生命周期
    Android View 绘制刷新流程分析
    Android 设置Activity样式 透明度
  • 原文地址:https://www.cnblogs.com/iwangzhengchao/p/10080213.html
Copyright © 2011-2022 走看看