create or replace procedure fd(p_bj in number, --贷款本金
p_nll in number, --年利率
p_ns in number, --贷款年数
p_xh in number, --还款月序号
msg out varchar) is
v_yll number;
v_ys number;
v_yhbj number;
v_myyge number;
v_myhlx number;
v_myhbj number;
v_zlx number;
v_mydjlx number;
begin
v_yll := p_nll / 12;
v_ys := p_ns * 12;
if p_xh > v_ys then
msg := '还款月序号不可大于还款月数';
goto exits;
end if;
select (p_bj * v_yll * power((1 + v_yll), v_ys)) /
(power((1 + v_yll), v_ys) - 1)
into v_myyge
from dual;
select (p_bj * v_yll * power((1 + v_yll), v_ys)) /
(power((1 + v_yll), v_ys) - 1) * v_ys - p_bj
into v_zlx
from dual;
msg := msg|| '等额本息';
msg := msg|| chr(10) ||'总利息:' || round(v_zlx, 2);
select p_bj * v_yll *
(power((1 + v_yll), v_ys) - power((1 + v_yll), (p_xh - 1))) /
(power((1 + v_yll), v_ys) - 1)
into v_myhlx
from dual;
select p_bj * v_yll * power((1 + v_yll), (p_xh - 1)) /
(power((1 + v_yll), v_ys) - 1)
into v_myhbj
from dual;
msg := msg||chr(10) ||'第' || p_xh || '个月 供额:' || round(v_myyge, 2) || ' 本金:' || round(v_myhbj, 2) || ' 利息:' || round(v_myhlx, 2);
select p_bj / v_ys into v_myhbj from dual;
select p_bj / v_ys * v_yll into v_mydjlx from dual;
select ((p_bj / v_ys + p_bj * v_yll) + p_bj / v_ys * (1 + v_yll)) / 2 * v_ys - p_bj
into v_zlx
from dual;
msg := msg||chr(10) ||'等额本金';
msg := msg||chr(10) ||'总利息:' || round(v_zlx, 2) || ' 每月供递减额:' || round(v_mydjlx, 2);
v_yhbj := p_bj / v_ys * (p_xh - 1);
select (p_bj - v_yhbj) * v_yll into v_myhlx from dual;
select (p_bj / v_ys) + v_myhlx into v_myyge from dual;
msg := msg||chr(10) ||'第' || p_xh || '个月 供额:' || round(v_myyge, 2) ||' 本金:' || round(v_myhbj, 2) ||
' 利息:' || round(v_myhlx, 2);
<<exits>>
null;
exception
when others then
msg := sqlerrm;
end;

--------------------------------------------------------------------

输入如:贷款本金 400000  万

年利率 0.049

贷款年数 20

还款月序号  1 (第一个月)

返回结果:

等额本息

总利息:228266.29

第1个月 供额:2617.78 本金:984.44 利息:1633.33
等额本金
总利息:196816.67 每月供递减额:6.81
第1个月 供额:3300 本金:1666.67 利息:1633.33

--------------------------------------------------------------------

oracle 关于房贷计算过程的更多相关文章

  1. 虚拟机VMWARE上ORACLE License 的计算

    Oracle License的计算有两种方式:按照用户数和CPU个数. 其中按CPU计算方式如下: License Number = The Number of CPU Cores  *  Core ...

  2. oracle 11g在安装过程中出现监听程序未启动或数据库服务未注册到该监听程序

    15511477451 原文 oracle 11g在安装过程中出现监听程序未启动或数据库服务未注册到该监听程序? 环境:win7 64位系统.oracle11g数据库 问题描述:在win7 64位系统 ...

  3. linux主机load average的概念&&计算过程&&注意事项

    最近开发的一个模块需要根据机房各节点的负载情况(如网卡IO.load average等指标)做任务调度,刚开始对Linux机器load average这项指标不是很清楚,经过调研,终于搞清楚了其计算方 ...

  4. 机器翻译评价指标之BLEU详细计算过程

    原文连接 https://blog.csdn.net/guolindonggld/article/details/56966200 1. 简介 BLEU(Bilingual Evaluation Un ...

  5. 闰平年简介及计算过程描述 - Java代码实现

    import java.util.Scanner; /** * @author Shelwin Wei * 分析过程请参照<闰平年简介及计算过程描述>,网址 http://www.cnbl ...

  6. CFD计算过程发散诸多原因分析【转载】

    转载自: http://blog.sina.com.cn/s/blog_5fdfa7e601010rkx.html 今天探讨引起CFD计算过程中发散的一些原因.cfd计算是将描述物理问题的偏微分方程转 ...

  7. 随机森林之oob的计算过程

    随机森林有一个重要的优点就是,没有必要对它进行交叉验证或者用一个独立的测试集来获得误差的一个无偏估计.它可以在内部进行评估,也就是说在生成的过程中就可以对误差建立一个无偏估计. 随机森林在生成每颗决策 ...

  8. 来去学习之---KMP算法--next计算过程

    一.概述 KMP算法是一种字符串匹配算法,比如现有字符串 T:ABCDABCDABCDCABCDABCDE, P:ABCDABCDE P字符串对应的next值:[0,0,0,0,1,2,3,4,0] ...

  9. DFT计算过程详解

    DFT计算过程详解 平时工作中,我们在计算傅里叶变换时,通常会直接调用Matlab中的FFT函数,或者是其他编程语言中已经为我们封装好的函数,很少去探究具体的计算过程,本文以一个具体的例子,向你一步一 ...

随机推荐

  1. 创建Oracle表空间

    *分为四步 */ /*第1步:创建临时表空间 */ create temporarytablespace user_temp tempfile 'D:\oracle\oradata\Oracle9i\ ...

  2. GIS 案例教程-蜂窝多边形制作模型

    GIS 案例教程-蜂窝多边形制作模型 联系方式:谢老师,135-4855-4328,xiexiaokui#qq.com 优点: 拖放式,非编程,复制即用,不用配置. 效率高,非迭代,可以处理大数据. ...

  3. Fragment传参

    1. 封装基类 /** * Created by chenhaibin * Time 18/1/20 * Email chenhaibin415@163.com * Description:封装代码的 ...

  4. ModelSerializer Meta设置

    class AccountSerializer(serializers.ModelSerializer): class Meta: # 模型名称 model = User # 序列化返回的字段 fie ...

  5. string转可空类型

    string类型转可空类型 string.IsNullOrEmpty(str) ? (int?)null : int.Parse(str) 此处要注意将null转为可空的类型才可以,不然会报错

  6. PHP拦截器之__set()与__get()的理解与使用方法

    “一般来说,总是把类的属性定义为private,这更符合现实的逻辑.   但是,对属性的读取和赋值操作是非常频繁的,因此在PHP5中,预定义了两个函数“__get()”和“__set()”来获取和赋值 ...

  7. 使用Log4J收集日志

    一:搭建好Selenium+testNG+Maven环境,可参考 http://www.cnblogs.com/hc1020/p/8602863.html 二:百度搜索Maven仓库,然后搜索Log4 ...

  8. 下拉js的实现

    这个JS是出自一个浴室柜网站 $(document).ready(function(){ $(".side_nav_3").hover(function() { $(this).f ...

  9. Python学习之MacBook Pro中Python3.7安装pip以及numpy

    安装pip查看https://www.cnblogs.com/cxmo/p/10513502.html 安装numpy只需要在终端(在pycharm界面的终端下)输入:pip3.7 install n ...

  10. button的后台点击事件

    在html元素加上runat,type就可以使用onserverclick创建后台事件<button runat='server' onserverclick='Btn_Click' type= ...