• mysql数据创建带参的存储过程,并在存储过程中调用另一个存储过程


    一.需求:有三张表,分表是学生表,科目表和分数表:

    要求:创建一个带输出参数的存储过程,输出的参数有两个,第一个输出参数的值为分数总分/总人数,第二输出参数的值为分数总分*总人数


     1.学生表(学生号,学生姓名,学生地址)

    2.科目表(科目编码,科目名称)

     3.分数表(学生号,科目编码,分数)

     


     二.创建输出参数的存储过程


    CREATE  PROCEDURE `proc_auto_date2`(
    out ave FLOAT,out sum1 FLOAT)
    begin
    DECLARE score1 FLOAT; -- 声明变量score1
    DECLARE number1 int; -- 声明变量number1
    set ave=0; -- 设置ave输出参数的默认值为0
    set sum1=0; -- 设置sum1输出参数的默认值为0
    select sum(score) from score into score1; -- score1变量值
    select count(*) from student into number1; -- number1变量值
    select score1/number1 into ave; -- ave变量值
    -- set ave=score1/number;
    select score1*number1 into sum1; -- sum1变量值
    select ave; -- 输出ave
    select sum1; --输出sum1
    end


     三.调用带输出参数的存储过程


     1)使用call  proc_auto_date2(@ave,@sum1);

    调用成功之后,可以使用

    select  @ave -- 单独输出@ave的值

    select @sum1 -- 单独输出@sum1的值

    select  @ave,@sum1 -- 同时输出@ave,@sum1的值

    2)或者直接找到存储过程,直接运行


     四.创建一个带输出参数的存储过程,要求调用上一个存储过程的值


    要求:call  proc_auto_date2(@ave,@sum1)的@ave,@sum1值进行求和


    CREATE  PROCEDURE `proc_auto_date3`(
    out test1 int)
    -- test1为输出参数
    begin
    declare number2 int;
    declare ave FLOAT; -- 声明ave为存储过程proc_auto_date2的第一个输出参数
    declare sum1 FLOAT; -- 声明sum1为存储过程proc_auto_date2的第二个输出参数
    set number2=200;
    -- 调用存储过程 proc_auto_date2(ave,sum1)
    call proc_auto_date2(ave,sum1) ;
    -- 将存储过程proc_auto_date2的两个输出参数的和+number2变量的值赋值给test1输出参数
    set test1=@ave+@sum1+number2;
    select test1;
    end

    调用存储过程:


     五. 删除存储过程


     DROP  PROCEDURE 存储过程名

    DROP  PROCEDURE proc_auto_date3

  • 相关阅读:
    使用JS动态创建含有1000行的表格
    HashTable、HashMap、LinkedHashMap、TreeMap的比较
    移动节点
    WebLoigc的配置(生产模式与开发模式)
    海量数据查询问题--简单的理解
    Servlet中乱码问题
    九度 1369 字符串的排列
    九度 1349 数字在排序数组中出现的次数
    九度 1384 二维数组中的查找
    九度 1402 特殊的数
  • 原文地址:https://www.cnblogs.com/smilecindy/p/14036904.html
Copyright © 2020-2023  润新知