1.需求:根据输入的年份,月份,和当前系统的年份比较,不满1年按1年计算,多出1年11个月也按1年计算。

2.计算得出来的使用年份,计算车辆残值。

3.存储过程

DELIMITER $$

USE `dbTest`$$

DROP PROCEDURE IF EXISTS `sp_calc_year`$$

CREATE PROCEDURE `sp_calc_year`(IN Y INT,IN M INT,OUT Diff INT)
BEGIN
#declare current date default now();
DECLARE c_y INT DEFAULT 0;
DECLARE c_m INT DEFAULT 0;
SET c_y = YEAR(NOW());
SET c_m = MONTH(NOW());
IF c_y > Y THEN
IF c_m < M THEN
SET c_y = c_y - 1;
END IF;
SET Diff = c_y - Y;
IF Diff = 0 THEN
SET Diff = 1;
END IF;
ELSE
SET Diff = 1;
END IF;
END$$ DELIMITER ;

4.调用存储过程语法

SET @p_inY=2011;
SET @p_inM=10;
SET @p_out=0;
CALL sp_calc_year(@p_inY,@p_inM,@p_out);
SELECT @p_out;

5.函数

DELIMITER $$

CREATE
/*[DEFINER = { user | CURRENT_USER }]*/
FUNCTION `dbTest`.`sp_calc_ym`(Y INT, M INT)
RETURNS INT
/*LANGUAGE SQL
| [NOT] DETERMINISTIC
| { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
| SQL SECURITY { DEFINER | INVOKER }
| COMMENT 'string'*/
BEGIN
DECLARE c_y INT DEFAULT 0;
DECLARE c_m INT DEFAULT 0;
DECLARE Diff INT DEFAULT 1;
SET c_y = YEAR(NOW());
SET c_m = MONTH(NOW());
IF c_y > Y THEN
IF c_m < M THEN
SET c_y = c_y - 1;
END IF;
SET Diff = c_y - Y;
IF Diff = 0 THEN
SET Diff = 1;
END IF;
ELSE
SET Diff = 1;
END IF;
RETURN Diff;
END$$ DELIMITER ;

6.调用函数语法

SELECT `sp_calc_ym`(2011,10);

7.综合使用

SELECT @var:=80000*POWER(0.85,2) AS "车辆残值";
SELECT reg_no,
CASE reg_no WHEN 718170554 THEN '黄色宾利,沪A55662'
WHEN 124553063 THEN '红色宾利,沪A55661'
WHEN 114480011 THEN '白色奔驰,沪N55663'
WHEN 816053337 THEN '褐色宾利,沪N55665'
WHEN 653973365 THEN '银色阿斯顿马丁,沪N55666'
WHEN 990125871 THEN '绿色阿斯顿马丁,京B55667'
WHEN 425710387 THEN '红色宝马,京B55668'
WHEN 704411338 THEN '黄色宝马,沪D55669'
WHEN 116323731 THEN '白色宝马,杭C55670'
WHEN 589618212 THEN '黑色宝马,沪D55671'
ELSE 'more' END
AS testCol ,
plate_num,
c.brand_txt AS "品牌",
c.year AS "年份",
c.month AS "月份",
c.guide_price AS "指导价",
c.suggest_price AS "建议小时价格",
c.hour_price AS "每小时价格",
c.day_price AS "天价格",
c.week_price AS "周价格" ,
c.month_price AS "月价格",
c.min_rent_time AS "最少租用时间(小时)",
c.max_rent_time AS "最长租用时间(小时)",
80000*POWER(0.85,sp_calc_ym(c.year,c.month)) AS "车辆残值"
FROM car AS c WHERE reg_no IN ('','','','','','','','','','') ORDER BY reg_no ASC;

mysql存储过程和函数使用实例的更多相关文章

  1. MySql存储过程与函数详解

    存储过程和函数是在数据库中定义一些SQL语句的集合,然后直接调用这些存储过程和函数来执行已经定义好的SQL语句.存储过程和函数可以避免开发人员重复的编写相同的SQL语句.而且,存储过程和函数是在MyS ...

  2. MYSQL存储过程和函数学习笔记

    学至Tarena金牌讲师,金色晨曦科技公司技术总监沙利穆课程笔记的综合. 1. 什么是存储过程和函数 将SQL语句放入一个集合里,然后直接调用存储过程和函数来执行已经定义好的SQL语句,通过存储过程和 ...

  3. Paip.断点调试MYSQL存储过程跟函数的解决方案大法

    Paip.断点调试MYSQL存储过程跟函数的解决方案大法 作者Attilax ,  EMAIL:1466519819@qq.com  来源:attilax的专栏 地址:http://blog.csdn ...

  4. Mysql存储过程和函数

    Mysql存储过程和函数 基本概念: 创建存储过程和函数是指将经常使用的一组SQL语句的组合在一起,并将这些SQL语句当作一个整体存储在MySQL服务器中.例如,银行经常需要计算用户的利息.不同类别的 ...

  5. MySql存储过程、函数

    存储过程和函数是在数据库中定义一些SQL语句的集合,然后直接调用这些存储过程和函数来执行已经定义好的SQL语句.存储过程和函数可以避免开发人员重复的编写相同的SQL语句.而且,存储过程和函数是在MyS ...

  6. MySql存储过程与函数

    林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 摘要:存储过程和函数是在数据库中定义一些SQL语句的集合,然后直接调用这些存储过程和函数来运行 ...

  7. Mysql学习总结(11)——MySql存储过程与函数

    摘要:存储过程和函数是在数据库中定义一些SQL语句的集合,然后直接调用这些存储过程和函数来执行已经定义好的SQL语句.存储过程和函数可以避免开发人员重复的编写相同的SQL语句.而且,存储过程和函数是在 ...

  8. Mysql - 存储过程/自定义函数

    在数据库操作中, 尤其是碰到一些复杂一些的系统, 不可避免的, 会用到函数/自定义函数, 或者存储过程. 实际项目中, 自定义函数和存储过程是越少越好, 因为这个东西多了, 也是一个非常难以维护的地方 ...

  9. MySQL 存储过程和函数

    概述 一提到存储过程可能就会引出另一个话题就是存储过程的优缺点,这里也不做讨论,一般别人问我我就这样回答你觉得它好你就用它.因为mysql中存储过程和函数的语法非常接近所以就放在一起,主要区别就是函数 ...

随机推荐

  1. UART,USART,SPI,I2C等总线的介绍与区别20160526

    首先来说一下UART和USART的区别: 1.字面意义: UART:universal asynchronous receiver and transmitter通用异步收发器: USART:univ ...

  2. 在EF的code frist下写稳健的权限管理系统:数据库模型(二)

    先从数据库开始,因为是用EF的code frist,所以所有的设计都在解决项目中进行. 先是数据模型开始 我已经建立了四个模型,user,role,action,actiongroup user里面有 ...

  3. 安装使用rspec

    一,安装ruby. 二,运行命令,安装rspec的gem包: gem install rspec 会看到如下的结果: Fetching: rspec-core-2.14.7.gem (100%) Fe ...

  4. C# Sql 触发器

    触发器是一种特殊类型的存储过程,它不同于之前的我们介绍的存储过程.触发器主要是通过事件进行触发被自动调用执行的.而存储过程可以通过存储过程的名称被调用. Ø 什么是触发器 触发器对表进行插入.更新.删 ...

  5. 仿SDWebImage

    仿SDWebImage 目标:模拟 SDWebImage 的实现 说明:整体代码与之前博客上的演练代码的基本一致,只是编写顺序会有变化! 在模仿 SDWebImage 之前,首先需要补充一个知识点:N ...

  6. java遍历Map的几种方式

    1.遍历map的几种方式:private Hashtable<String, String> emails = new Hashtable<String, String>(); ...

  7. 菜鸟学习Spring——第一个例子

    一.概述 原来我们利用工厂来实现灵活的配置.现在利用Spring以后把这个交给了IoC容器管理.我们只要在XML文件上配上就可以了这样的话就节省了很多开发时间我们不需要知道后面的有多少只要动态的配上类 ...

  8. EMVTag系列15《选择应用响应数据》

    1. 接触交易选择应用响应数据 标签 长度 数据域 9102 A5 变长 FCI专用模板 强制 50 1–16 应用标签 纯电子现金:PBOC DEBIT 借记卡:PBOC DEBIT 贷记卡:PBO ...

  9. 【热门收藏】iOS开发人员必看的精品资料(100个)——下载目录

    iPhone.iPad产品风靡全球,巨大的用户群刺激着iOS软件开发需求,然而国内人才缺口很大,正处于供不应求的状态,ios开发前景大好.我们整理了51CTO下载中心100份热门的ios开发资料,做了 ...

  10. [转]AngularJS: 使用Scope时的6个陷阱

    在使用AngularJS中的scope时,会有6个主要陷阱.如果你理解AngularJS背后的概念的话,这6个点其实非常的简单.但是在具体讲述这6个陷阱之前我们先要讲两个其它的概念. 概念1: 双向数 ...