MySQL存储过程:编写还款操作pro_1
MySQL存储过程:编写还款操作pro_1
本关任务:编写存储过程pro_1完成还款操作。
输入参数
- 银行代码(bno)
- 法人代码(eno)
- 借款日期(lsdate)
- 借款金额(lamount)
- 借款期限(lterm)
处理 判断输入参数所对应的贷款是否已还款。
- 如果该笔贷款已还清,则不进行任何操作;
- 如果该笔贷款尚未还清,则进行还款操作。将还款日期更新为系统当前日期,修改let、bankt表所对应的eamount和bamount值,将本笔贷款的金额从未还清总额中减去。
涉及的表和字段
-
银行表(bankt):
- 银行代码(bno)char(12)
- 银行名称(bname)varchar(100)
- 电话(tel)varchar(20)
- 未还清贷款总额(bamount)int
-
法人表(let):
- 法人代码(eno)char(7)
- 法人名称(ename)varchar(20)
- 经济性质(enature)varchar(20)
- 注册资金(ecapital)int
- 未还清贷款总额(eamount)int
-
贷款表(loant):
- 银行代码(bno)char(12)
- 法人代码(eno)char(7)
- 贷款日期(lsdate)date
- 贷款金额(lamount)int
- 贷款期限(lterm)int
- 还款日期(ledate)date
编程要求 在代码文件“step1/query1.sql”中实现存储过程pro_1; 在代码文件“step1/query2.sql”中实现对存储过程的调用。
代码示例
CREATE PROCEDURE pro_1 (
IN p_bno CHAR(12),
IN p_eno CHAR(7),
IN p_lsdate DATE,
IN p_lamount INT,
IN p_lterm INT
)
BEGIN
DECLARE v_bamount INT;
DECLARE v_eamount INT;
-- 判断贷款是否已还清
SELECT ledate INTO v_bamount
FROM loant
WHERE bno = p_bno AND eno = p_eno AND ledate IS NOT NULL;
IF v_bamount IS NULL THEN
-- 还款操作
UPDATE loant SET ledate = CURRENT_DATE()
WHERE bno = p_bno AND eno = p_eno;
UPDATE bankt SET bamount = bamount - p_lamount
WHERE bno = p_bno;
UPDATE let SET eamount = eamount - p_lamount
WHERE eno = p_eno;
END IF;
COMMIT;
END;
调用示例
CALL pro_1('银行代码', '法人代码', '借款日期', '借款金额', '借款期限');
注意
- 请根据你的数据库环境和需求,将上述代码中的表名、字段名和数据类型进行适当修改。
- 在使用存储过程之前,确保已经创建了相关的表并插入了测试数据。
- 具体实现可能因数据库管理系统的不同而有所差异。请根据你使用的数据库管理系统的文档和语法规范进行相应的修改和调整。
原文地址: https://www.cveoy.top/t/topic/iya 著作权归作者所有。请勿转载和采集!