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. 容易被忽略的事----sql语句中select语句的执行顺序

    关于Sql中Select语句的执行顺序,一直很少注意这个问题,对于关键字的使用也很随意,至于效率问题,因为表中的数据量都不是很大,所以也不是很在意. 今天在一次面试的时候自己见到了,感觉没一点的印象, ...

  2. Maven学习随记

    慕课网视频教程:http://www.imooc.com/learn/443 ====Maven是什么 Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建.报告和文档的软件 ...

  3. Unity Scripting Tutorials 要点记录

    (搬运自我在SegmentFault的博客) 这几天通过Unity官网的Unity Scripting Tutorials的视频学习Unity脚本,观看的过程中做了记录.现在,整理了一下笔记,供自己以 ...

  4. EMVTag系列11《电子现金发卡行授权码》

    按照银联个人化模板的建议,如卡片支持非接触快速支付应用(qPBOC),则推荐将电子现金授权码(9F74)作为qPBOC 应用AFL列表中的最后一条记录,且最后一条记录仅包含该数据元. 原因是:在某些情 ...

  5. bhrs报表年结步骤

    --前期准备数据三个表数据: s_subjtotal_year, subject_item, branch ,decrsubjtotal---informix 查看数据库剩余空间select d.na ...

  6. [原创]PostgreSQL Plus Advince Server在 HA环境中一对多的Stream Replication配置(四)

    八.HA环境下配置多节点的sshVIP(s1):[root@s1 ~]# mkdir /opt/PostgresPlus/9.2AS/.ssh[root@s1 ~]# chown enterprise ...

  7. bootstrap API地址

    http://wenzhixin.net.cn/p/bootstrap-table/docs/examples.html#pagination-table

  8. Linux C 文件与目录3 文件读写

    文件读写 文件读写是指从文件中读出信息或将信息写入到文件中.Linux文件读取可使用read函数来实现的,文件写入可使用write函数来实现.在进行文件写入的操作时,只是在文件的缓冲区中操作,可能没有 ...

  9. C++ STL find

    find 函数,复杂度O(n) 涉及一些 泛型编程 #include <iostream> #include <string.h> #include <string> ...

  10. opencv颜色识别代码分享

    android 平台 opencv 实现颜色识别代码:http://www.eyesourcecode.com/thread-40682-1-1.htmlopencv的颜色识别简单实现的代码:http ...