oracle 关于房贷计算过程
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 关于房贷计算过程的更多相关文章
- 虚拟机VMWARE上ORACLE License 的计算
Oracle License的计算有两种方式:按照用户数和CPU个数. 其中按CPU计算方式如下: License Number = The Number of CPU Cores * Core ...
- oracle 11g在安装过程中出现监听程序未启动或数据库服务未注册到该监听程序
15511477451 原文 oracle 11g在安装过程中出现监听程序未启动或数据库服务未注册到该监听程序? 环境:win7 64位系统.oracle11g数据库 问题描述:在win7 64位系统 ...
- linux主机load average的概念&&计算过程&&注意事项
最近开发的一个模块需要根据机房各节点的负载情况(如网卡IO.load average等指标)做任务调度,刚开始对Linux机器load average这项指标不是很清楚,经过调研,终于搞清楚了其计算方 ...
- 机器翻译评价指标之BLEU详细计算过程
原文连接 https://blog.csdn.net/guolindonggld/article/details/56966200 1. 简介 BLEU(Bilingual Evaluation Un ...
- 闰平年简介及计算过程描述 - Java代码实现
import java.util.Scanner; /** * @author Shelwin Wei * 分析过程请参照<闰平年简介及计算过程描述>,网址 http://www.cnbl ...
- CFD计算过程发散诸多原因分析【转载】
转载自: http://blog.sina.com.cn/s/blog_5fdfa7e601010rkx.html 今天探讨引起CFD计算过程中发散的一些原因.cfd计算是将描述物理问题的偏微分方程转 ...
- 随机森林之oob的计算过程
随机森林有一个重要的优点就是,没有必要对它进行交叉验证或者用一个独立的测试集来获得误差的一个无偏估计.它可以在内部进行评估,也就是说在生成的过程中就可以对误差建立一个无偏估计. 随机森林在生成每颗决策 ...
- 来去学习之---KMP算法--next计算过程
一.概述 KMP算法是一种字符串匹配算法,比如现有字符串 T:ABCDABCDABCDCABCDABCDE, P:ABCDABCDE P字符串对应的next值:[0,0,0,0,1,2,3,4,0] ...
- DFT计算过程详解
DFT计算过程详解 平时工作中,我们在计算傅里叶变换时,通常会直接调用Matlab中的FFT函数,或者是其他编程语言中已经为我们封装好的函数,很少去探究具体的计算过程,本文以一个具体的例子,向你一步一 ...
随机推荐
- python学习笔记---环境的安装,pip命令,数据类型,运算
1.进入python环境: python 2:py -2 python 3:py -3 2.退出python环境 exit()/quit()/ctrl+z+enter ctrl+z+enter没有尝试 ...
- react-native-table-component, react-native 表格
使用 react-native-table-component, 加上 FlatList 组件,实现可以下拉刷新,上拉加载的demo import React, { Component } from ...
- k3生成解决方案时错误处理
F6一键生成,会出现进程使用的错误,关掉了游览器,bos设计器,以及重启了本机iis站点,都没解决,打开任务管理器发现,bos.ide没有关掉
- css note
1.text-align规定了其子元素的对齐方式,当设置在子元素无效时,尝试设置在父元素,子元素可以水平居中: 2.vertical-align使用的前提,首先元素必须是display:inline ...
- spring中Constructor、@Autowired、@PostConstruct的顺序
其实从依赖注入的字面意思就可以知道,要将对象p注入到对象a,那么首先就必须得生成对象p与对象a,才能执行注入.所以,如果一个类A中有个成员变量p被@Autowired注解,那么@Autowired注入 ...
- java swing button和键盘监听冲突问题
原因: 点击button会让jframe失去焦点,然后键盘监听不起作用 解决: 让jframe重新获取焦点就行了 jf.setFocusable(true); // JFrame jf = new J ...
- webstorm没有及时将改动保存到文件盘的问题
webpack经常监听不到webstorm的改动,即使手动ctrl+s了,导致无法触发编译,去google查了下,发现webstorm有一个“save write”的功能,见下图: 这选项的作用应该是 ...
- dump命令详解
1.简介: dump命令用于备份文件系统. dump为备份工具程序,可将目录或整个文件系统备份至指定的设备,或备份成一个大文件. 2.语法: dump [-cnu][-0123456789][-b & ...
- list.sort和内置方法sorted的区别
1.list.sort会直接修改list,不会把原来的列表复制一份,直接修改list,所以list.sort的返回值为None; 2.sorted(list)的返回值就修改之后的list,原来的lis ...
- cuts
1.cuts .replacename.fasta..replacename.fasta..replacename.fasta.cut.list awk 'system("mv Dme49. ...