数据库实验九 存储过程(新)第2关:建立和调用存储过程(带输出参数)

任务描述

本关任务: 销售数据库有工作人员、销售单数据表 工作人员gzry数据表有雇员号gyh、姓名gyxm、出生日期csrq、学历xl、工资gz、部门bm、电话dh字段

,

销售单xsd数据表有销售单号xsdh、会员号hyh、雇员号gyh、销售日期xsrq、应付款yfk、实际付款sjfk字段

,

任务要求

建立存储过程 ygyj(in nf int,in yf int,in xm varchar(10) out pj varchar(10)) 输入年份nf和月份yf和姓名xm ,输出对该工作人员的评价pj。 若该员工在指定年份和月份的销售业绩(销售单xsd的实际付款sjfk的合计)大于等于10000元,则返回优秀,大于等于5000元,则返回达标,大于0小于5000元返回不达标,若没有销售单则返回无业绩。 调用过程 以2015、7和王雅静为参数,调用ygyj过程,将结果存入@yj1 以2015、6和廖秉娴为参数,调用ygyj过程,将结果存入@yj2 以2015、7和赵敏为参数,调用ygyj过程,将结果存入@yj3 以2015、7和章伟为参数,调用ygyj过程,将结果存入@yj4

相关知识

参数列表

([in|out|inout proc_name type][,in|out|inout proc_name type]) 过程可以没有参数或多个参数,多个参数之间用逗号分隔 IN输入参数,使数据可以传递给存储过程 OUT输出参数,用于需要返回结果 INOUT输入输出参数 既可以充当输入参数也可以充当输出参数

调用存储过程

CALL 存储过程(参数列表) 当有out参数时,可以用全局变量接收结果 全局变量以@开头,在mysql会话中一直有效

case多分支语句
 
  1. CASE
  2. WHEN <条件1> THEN <语句1>
  3. WHEN <条件2> THEN <语句2>
  4. ……
  5. [Else <其他语句>]
  6. END CASE
 use sale;
 #代码开始
 #定义过程
delimiter //
create procedure ygyj(in nf int,in yf int,in xm varchar(10),out pj varchar(10))
begin
    declare count int;
    set count = 0;
    select sum(sjfk) into count 
    from gzry join xsd on gzry.gyh=xsd.gyh 
    where gyxm=xm and nf=DATE_FORMAT(xsrq,'%Y') and yf=DATE_FORMAT(xsrq,'%m');
    if count < 5000
        then set pj="不达标";
    elseif count < 10000
        then set pj="达标";
    elseif count >= 10000
        then set pj="优秀";
    else
        set pj="无业绩";
    end if;
end //
delimiter ;
 #调用过程
call ygyj(2015,7,"王雅静",@yj1);
call ygyj(2015,6,"廖秉娴",@yj2);
call ygyj(2015,7,"赵敏",@yj3);
call ygyj(2015,7,"章伟",@yj4);

 #代码结束
 select @yj1,@yj2,@yj3,@yj4;

  • 8
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值