mysql存储过程和函数使用实例
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存储过程和函数使用实例的更多相关文章
- MySql存储过程与函数详解
存储过程和函数是在数据库中定义一些SQL语句的集合,然后直接调用这些存储过程和函数来执行已经定义好的SQL语句.存储过程和函数可以避免开发人员重复的编写相同的SQL语句.而且,存储过程和函数是在MyS ...
- MYSQL存储过程和函数学习笔记
学至Tarena金牌讲师,金色晨曦科技公司技术总监沙利穆课程笔记的综合. 1. 什么是存储过程和函数 将SQL语句放入一个集合里,然后直接调用存储过程和函数来执行已经定义好的SQL语句,通过存储过程和 ...
- Paip.断点调试MYSQL存储过程跟函数的解决方案大法
Paip.断点调试MYSQL存储过程跟函数的解决方案大法 作者Attilax , EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http://blog.csdn ...
- Mysql存储过程和函数
Mysql存储过程和函数 基本概念: 创建存储过程和函数是指将经常使用的一组SQL语句的组合在一起,并将这些SQL语句当作一个整体存储在MySQL服务器中.例如,银行经常需要计算用户的利息.不同类别的 ...
- MySql存储过程、函数
存储过程和函数是在数据库中定义一些SQL语句的集合,然后直接调用这些存储过程和函数来执行已经定义好的SQL语句.存储过程和函数可以避免开发人员重复的编写相同的SQL语句.而且,存储过程和函数是在MyS ...
- MySql存储过程与函数
林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 摘要:存储过程和函数是在数据库中定义一些SQL语句的集合,然后直接调用这些存储过程和函数来运行 ...
- Mysql学习总结(11)——MySql存储过程与函数
摘要:存储过程和函数是在数据库中定义一些SQL语句的集合,然后直接调用这些存储过程和函数来执行已经定义好的SQL语句.存储过程和函数可以避免开发人员重复的编写相同的SQL语句.而且,存储过程和函数是在 ...
- Mysql - 存储过程/自定义函数
在数据库操作中, 尤其是碰到一些复杂一些的系统, 不可避免的, 会用到函数/自定义函数, 或者存储过程. 实际项目中, 自定义函数和存储过程是越少越好, 因为这个东西多了, 也是一个非常难以维护的地方 ...
- MySQL 存储过程和函数
概述 一提到存储过程可能就会引出另一个话题就是存储过程的优缺点,这里也不做讨论,一般别人问我我就这样回答你觉得它好你就用它.因为mysql中存储过程和函数的语法非常接近所以就放在一起,主要区别就是函数 ...
随机推荐
- Python学习教程(learning Python)--3.3.3 Python逻辑关系表达式
在if分支判断语句里的条件判断语句不一定就是一个表达式,可以是多个(布尔)表达式的组合关系运算,这里如何使用更多的关系表达式构建出一个比较复杂的条件判断呢?这里需要再了解一下逻辑运算的基础知识.逻辑关 ...
- 《Prism 5.0源码走读》Service Locator Pattern
在Prism Bootstrapper里面取实例的时候使用 ServiceLocator模式,使用的是CommonServiceLocator库 (http://commonservicelocato ...
- System V共享内存区
要点 shell查看命令:ipcs -m 主要函数 #include <sys/shm.h> //oflag=IPC_CREAT|IPC_EXCL|0644组合 //创建一个内存共享区 i ...
- HDU1009
题意:有n个房子,每个房子里都有老鼠喜欢吃的咖啡豆J[i],但是每个房子都有猫看守,老鼠现在手上有M的猫粮.可以用猫粮换咖啡豆,每只猫都有猫粮的要求F[i].老鼠得到的咖啡豆是J[i]*a% ...
- DB2行转列(多维度)
多维度下进行行列转换,下面的行列转换时根据客户,所属银行机构进行的行列转换. -----------------建表 CREATE TABLE CUST_BANK_INFO ( CUST_ID ), ...
- servlet中的cookie
cookie的机制是:从客户端(浏览器)发送请求到服务器,然后服务器把接受的信息回写到客户端,这个信息在客户端跟服务器之间进行交互. 下面是一个创建cookie的小案例 //如何创建cookie pa ...
- RAP开发入门-搭建RAP开发环境(一)
ps:补充 RAP (Remote Application Platform) 官网地址eclipse.org/rap 1.下载IDE http://www.eclipse.org/downloads ...
- Go append方法
append用来将元素添加到切片末尾并返回结果.看代码: package main import "fmt" func main() { x := [],,} y := [],,} ...
- linux下sort详解(sort对科学记数法的排序)
1.参数解释 -t 设置分隔符 -k 设置比较域(列) -n 按数字比较 -g 科学记数法方式比较 -o 设置输出文件,与“>”相比可以设置输出到原文件,“>”会清空原文件 -r 降序(大 ...
- Qt入门1---widget、mainwindow和Dialog区别
摘要: 看了一个月的Qt,居然没有理清Qt中 ------------------------------------ 1.QMainWindow A main window provides a f ...