收藏 分销(赏)

数据库技术与应用课程设计银行ATM存取款系统.doc

上传人:仙人****88 文档编号:8739837 上传时间:2025-02-28 格式:DOC 页数:65 大小:1.47MB 下载积分:10 金币
下载 相关 举报
数据库技术与应用课程设计银行ATM存取款系统.doc_第1页
第1页 / 共65页
数据库技术与应用课程设计银行ATM存取款系统.doc_第2页
第2页 / 共65页


点击查看更多>>
资源描述
《数据库技术与应用》 课程设计报告 项目名称:银行ATM存取款机系统设计与实现 姓 名: 专 业: 指导教师: 完成日期:2015年11月21日 62 内蒙古科技大学课程设计任务书 课程名称 数据库技术与开发 设计题目 银行ATM存取款机系统设计与实现 指导教师 时间 2015年11月20日 一、教学要求 1、培养学生运用所学课程《SQL Server 2012》的理论知识和技能以及对数据库组织、管理和使用能力。 2、掌握数据库应用系统的整个设计过程(包括需求分析、概念结构设计、逻辑结构设计与物理设计与实施)以及运用Transact-SQL编写代码 二、设计资料及参数 根据问题分析,明确银行ATM存取款系统的实体、实体属性及实体之间的关系: 在充分理解银行业务需求后,围绕银行的需求进行分析,确认与银行ATM存取款有紧密关系的实体,并得到每个实体的必要属性。 根据业务,分析多个实体之间的关系。实体之间的关系可以是一对一、一对多和多对多。 三、设计要求及成果 1.创建数据库、创建表、创建约束 2.使用触发器和插入测试数据 3.模拟常规业务、创建视图 4.使用存储过程实现业务处理 5.利用事务实现较复杂的数据更新 6.使用视图简化复杂的数据查询 7.使用游标技术实现结果集的行集操作 四、进度安排 用Power designer绘制CDM模型、生成PDM模型(1天) 用T-SQL进行编程(2天) 修改优化课程设计代码(2天) 编写课程设计说明书和验收(2天) 五、评分标准 1.实训文档(30%) 2.实训项目完成的质量(50%) 3.平日考勤(20%) 4.成绩采用五级分制评定 六、建议参考资料 1.《数据库设计规范》, 2.《数据库系统教程》,施伯乐,高等教育出版社 3.《数据库系统概论》,王珊,高等教育出版社 4. 《SQL Server 2012》,王英英,清华大学出版社 目录 内蒙古科技大学课程设计任务书 I 第一章 需求分析 1 1.1 项目任务 1 1.2 项目技能目标 1 1.3 需求概述 1 1.4 开发环境 1 1.5 问题分析 1 第二章 项目实训内容 4 2.1 实训一:制定《数据库设计与编程规范》 4 2.2 实训二:数据库分析设计与建模 4 2.3 实训三:创建数据库 6 2.4 实训四:创建触发器和插入测试数据 10 2.4 实训五:模拟常规业务 19 2.6 实训六:创建、使用视图 24 2.7 实训七:存储过程实现业务处理 27 2.8 实训八:利用事务实现转账 41 第三章 项目心得体会 46 第四章 对《我的租房网》进行优化 47 附页 57 第一章 需求分析 1.1 项目任务 创建数据库、创建表、创建约束 使用触发器和插入测试数据 模拟常规业务、创建视图 使用存储过程实现业务处理 利用事务实现较复杂的数据更新 1.2 项目技能目标 使用T-SQL语句创建数据库、表和各种约束。 使用T-SQL语句编程实现常见业务。 使用触发器实现多表之间的级联更新。 使用事务和存储过程封装业务逻辑。 使用视图简化复杂的数据查询。 使用游标技术实现结果集的行集操作。 1.3 需求概述 某银行是一家民办的小型银行企业,现有十多万客户,公司将为该银行开发一套ATM存取款机系统,对银行日常的存取款业务进行计算机管理,以便保证数据的安全性,提高工作效率。 要求根据银行存取款业务需求设计出符合第三范式的数据库结构,使用T-SQL语言创建数据库和表,并添加表约束,进行数据的增删改查,运用逻辑结构语句、事务、视图和存储过程,按照银行的业务需求,实现各项银行日常存款、取款和转账业务。 1.4 开发环境 数据库:SQL SERVER 2008开发版 1.5 问题分析 该项目的ATM存取款机业务如下: (1) 银行存取款业务介绍 银行为客户提供了各种银行存取款业务。详见表1.1 表1.1银行存取款业务 业务 描述 活期 无固定存期,可随时存取,存取金额不限的一种比较灵活的存款 定活两便 事先不约定存期,一次性存入,一次性支取的存款 通知 不约定存期,支取时需提前通知银行,约定支取日期和金额方能支取的存款 整存整取 选择存款期限,整笔存入,到期提取本息的一种定期储蓄。银行提供的存款期限有1年、2年和3年 零存整取 一种事先原定金额,逐月按约定金额存入,到期支取本息的定期储蓄。银行提供的存款期限由1年、2年和3年 自助转账 在ATM存取款机上办理同一币种账户的银行卡之间互相划转 (2) 客户信息 每个客户凭个人身份证在银行可以开设多个银行卡账户,开设账户时,客户需要提供的开户数据如表1.2所示: 表1.2开设银行卡账户的客户信息 数据 描述 姓名 必须提供 身份证号 唯一确定客户,如果是二代身份证,则是由17位数字和1位数字或者字符X构成。如果是一代身份证,则身份证号全部是15位数字。 联系电话 分为座机号码和手机号码:座机号码由数字和“-”构成,由以下两种格式:XXX-XXXXXXXX或者XXXX-XXXXXXX。手机号码由11位数字构成,且前2位必须是13或者15开头。 居住地址 可以选择 (3) 银行卡账户信息 银行为每个账户提供一个银行卡,每个银行卡可以存入一种币种的存款,银行保存账户如表1.3所示: 表1.3 银行卡账户信息 数据 描述 卡号 银行的卡号由16位数字组成,其中:一般前8位代表特俗含义,如代表某总行某支行等,假定该行要求其营业厅的卡号格式为1010 3576 XXXX XXXX,后8位必须是随机产生且唯一,每4位号码后有空格。 密码 由6位数字构成,开户时默认为“888888” 币种 默认为RMB,目前该银行尚未开设其他币种存款业务。 存款类型 必须选择 开户日期 客户开设银行卡账户的日期,默认为当日 开户金额 客户开设银行卡账户时存入的金额,规定不得小于1元。 是否挂失 默认为“否” 客户持银行卡在ATM机上输入密码,经系统验证身份后办理存款、取款和转账等银行业务。银行规定,每个账户当前的存款金额不得小于1元。 (4) 银行卡交易信息 银行在为客户办理业务时,需要记录每一笔账目,账目交易信息如表1.4所示: 表1.4银行卡交易信息 数据 描述 卡号 银行的卡号由16位数字组成 交易日期 默认为当日 交易金额 必须大于0元 交易类型 包括:存入和支取两种 备注 对每笔交易做必要的说明 (5) 银行卡手工账户和存取款单据信息 该银行要求这套软件实现银行客户的开户、存款、取款、转账和余额查询等业务,使得银行储蓄业务方便、快捷,同事保证银行业务数据的安全性。 为使开发人员尽快了解银行业务,该银行提供了银行卡手工账户和存取款单据的样本数据,以供项目开发时参考,参加图1.1和图1.2。 图1.1银行卡手工账户样本数据 图1.2存取款单据样本数据 第二章 项目实训内容 2.1 实训一:制定《数据库设计与编程规范》 1.参考技术文档:《数据库设计规范 (1)》、《数据库设计规范(修订)》、《数据库设计及编写规范》、《编程规范(T-SQL)》、《Transact-SQL_数据库编程命名规范》、《SQL_Server数据库编程规范》等技术文档, 2.制定一份10-15页,不少于3000字的《数据库设计与SQL编程规范》,要求至少包含各个数据库对象的命名规范、编程规范及注释规范。 该实训项目的设计与编程要求遵循该实训制定的《数据库设计与编程规范》。 3.《数据库设计与SQL编程规范》见附页2 2.2 实训二:数据库分析设计与建模 (1)分析银行ATM存取款系统实体 根据问题分析,明确银行ATM存取款系统的实体、实体属性及实体之间的关系: 1.在充分理解银行业务需求后,围绕银行的需求进行分析,确认与银行ATM存取款有紧密关系的实体,并得到每个实体的必要属性。 2.根据业务,分析多个实体之间的关系。实体之间的关系可以是一对一、一对多和多对多。 3.要求使用Visio绘制出ATM存取款系统ER图。 4.参考资料:《ER设计》、《基本ER图要点》 创建如下图2.1所示ER模型图: 图2.1银行存取款系统数据ER图模型 (2)规范数据库结构设计 1.使用数据库设计范式对数据库表结构进行规范优化,规范数据库的表结构同时,要考虑软件运行性能。必要时,可以有悖于第三范式的要求,适当增加冗余数据、减少表间链接,以空间换取时间。 2.如所谓第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。 3.如在银行客户表BankCustomer中,不能将客户信息都放在一列中显示,也不能将其中的两列或多列在一列中显示;客户信息表的每一行只表示一个员工的信息,一个员工的信息在表中只出现一次。简而言之,第一范式就是无重复的列。 (3)安装并演示Power designer建模示例 参考《PowerDesigner系统分析与建模》,安装PowerDesigner及破解步骤、演示创建数据库概念模型CDM、数据库物理模型PDM和自动生成T-SQL语句等操作。 (4)绘制CDM模型、生成PDM模型和生成T-SQL语句 使用PowerDesigner,把设计数据库第一步结果(即分析得到的银行ATM存取款系统的实体、实体属性、以及实体之间的关系)用CDM表示,要求CDM要体现出各实体之间的关系以及各实体的实体属性。 创建如下图2.2所示的数据库概念模型: 图2.2银行存取款系统数据概念模型CDM 检查所创建CDM模型无误后,自动生成相应的CDM设计文档和银行存取款系统数据物理模型PDM。PDM模型如图2.3所示: 图2.3银行存取款系统数据物理模型PDM 2.3 实训三:创建数据库 (1)创建数据库 1.使用Create DataBase语句创建“ATM存取款机系统”数据库BankDB,数据文件和日志文件保存在指定目录下(建立一个文件夹,用于存放该实训项目的所有相关T-SQL源文件), 文件增长率为15%。 2.创建数据库的代码如下: --创建BankDB数据库,数据库文件和日志文件均保存在 --文件夹D:\数据库设计与开发\2015年工程案例项目\银行ATM存取款机系统下 --文件增长率均为15%,数据文件起始大小为5MB,日志文件起始大小为2MB create database BankDB on primary ( name=N'BankDB', filename=N'D:\数据库设计与开发\2015年工程案例项目\银行ATM存取款机系统\BankDB.mdf', size=5MB, filegrowth=15% ) log on ( name=N'BankDB_log', filename=N'D:\数据库设计与开发\2015年工程案例项目\银行ATM存取款机系统\BankDB_log.ldf', size=2MB, filegrowth=15% ) go (2) 创建各个数据表及相关的约束 创建银行业务类型表BankBusinessType 银行业务信息表如下: --判断银行业务类型表BankBusinessType是否存在,若存在,则删除 if exists(select * from sysobjects where id=OBJECT_ID(N'BankBusinessType')) drop table BankBusinessType --创建银行业务类型表BankBusinessType,包含银行业务类型编号BBTId,银行业务类型名称BBTName,银行业务描述BBTComment create table BankBusinessType ( --定义银行业务类型编号,主键,标识列从1开始递增 BBTId int identity(1,1) primary key, --定义银行业务类型名称,非空 BBTName char(20) not null, --定义银行业务描述 BBTComment varchar(100) ); go 创建银行卡客户表BankCustome 银行卡客户表如下: --判断银行卡客户表BankCustomer是否存在,若存在,则删除 if exists(select * from sysobjects where id=OBJECT_ID(N'BankCustomer')) drop table BankCustomer --创建银行客户信息表BankCustomer,包含客户编号BCID,客户姓名BCName,客户身份证BCICNo,客户联系电话BCTel、客户地址BCAddr create table BankCustomer ( --定义客户编号,主键,标识列从1开始递增 BCId int identity(1,1) primary key, --定义客户姓名,非空 BCName char(20) not null, --定义客户身份证号前17位必须是数字,后1位可以是数字或者X,非空 BCICNo char(18) not null check(left(BCICNo,17) like '[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]' and (right(BCICNo,1) like '[0-9]' or right(BCICNo,1) like 'X')), --定义客户联系电话,必须是固定电话号码或者手机号,座机号码由数字和“-”构成,由以下两种格式:XXX-XXXXXXXX或者XXXX-XXXXXXX, --手机号码由11位数字构成,且前2位必须是13或者15或者18开头,非空 BCTel varchar(20) not null check(BCTel like '[0-9][0-9][0-9][0-9]_[0-9][0-9][0-9][0-9][0-9][0-9][0-9]' or BCTel like '[0-9][0-9][0-9]_[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'or BCTel like '1[358][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'), --定义客户地址 BCAddr varchar(100) ); go 创建银行卡账户信息表BankCard 银行卡账户信息表如下: --判断银行卡账户信息表BankCard是否存在,若存在,则删除 if exists(select * from sysobjects where id=object_id(N'BankCard')) drop table BankCard /*创建银行卡账户信息表BankCard,包含银行卡卡号BCNo,银行卡密码BCPwd,币种BCCurrency,存款类型BCBBTId, 开户日期BCOpenDate,开户金额BCOpenAmount,是否挂失BCRegLoss,客户编号BCBCId,余额BankCardBCExistBalance*/ create table BankCard ( --定义银行卡卡号,必须符合位数字构成,前位为1010 3576,后位是随机产生且唯一,每4位必须有一个空格,主键 BCNo char(19) primary key check(BCNo like '1010 3576 [0-9][0-9][0-9][0-9] [0-9][0-9][0-9][0-9]'), --定义银行卡密码,开户默认为“888888”,非空 BCPwd char(6) not null default('888888'), --定义币种,默认为RMB类型,非空 BCCurrency char(5) not null default('RMB'), --定义存款类型,非空 BCBBTId int not null, --定义开户日期,默认当日,非空 BCOpenDate date not null default(getdate()), --定义开户金额,不得小于1元,非空 BCOpenAmount money not null check(BCOpenAmount>=1), --定义是否挂失,默认为“否” BCRegLoss char(2) default(N'否'), --定义客户编号,非空 BCBCId int not null, --定义银行卡账户余额,非空 BCExistBalance money not null ); go 创建银行卡交易信息表BankDealInfo 银行卡交易信息表如下: --判断交易信息BankDealInfo是否存在,若存在则删除 if exists(select * from sysobjects where id=OBJECT_ID(N'BankDealInfo')) drop table BankDealInfo --创建银行卡交易信息表BankDealInfo,包含交易编号BDNo,银行卡卡号BDBCNo,交易日期BDDealDate,交易金额BDDealAcount,交易类型BDDealType,交易备注BDDealComment create table BankDealInfo ( --定义交易编号,标识列从1开始增长,主键 BDNo int identity(1,1) primary key, --定义银行卡卡号,非空 BDBCNo char(19) not null, --定义交易日期,默认为当日,非空 BDDealDate Date not null default(getdate()), --定义交易金额,必须大于0元,非空 BDDealAcount money not null check(BDDealAcount>0), --定义交易类型,有两种:存入和支取,非空 BDDealType Char(10) not null check(BDDealType='存入' or BDDealType='支取'), --定义交易备注 BDDealComment varchar(100) ); go (3) 添加外键约束和生成数据库关系图 添加子表外键约束及生成数据库关系图 1.在银行卡账户信息表BankCard中BCBBTId字段上添加外键约束fk_BC_BBT 添加约束的代码如下: --在表BankCard中的BCBBTId字段上添加外键约束fk_BC_BBT alter table BankCard add constraint fk_BC_BBT foreign key(BCBBTId) references bankbusinesstype(BBTId); 2.在银行卡账户信息表BankCard中BCBCId字段上添加外键约束fk_BC_BC 添加约束的代码如下: --在表BankCard中的BCBCId字段上添加外键约束fk_BC_BC alter table BankCard add constraint fk_BC_BC foreign key(BCBCId) references BankCustomer(BCId); 3.在银行卡交易信息表BankDealInfo中BDBCNo字段上添加外键约束fk_BDI_BC 添加约束的代码如下: --在表BankDealInfo中的BDBCNo字段上添加外键约束fk_BDI_B alter table BankDealInfo add constraint fk_BDI_BC foreign key(BDBCNo) references BankCard(BCNo); 在SQL SERVER里自动生成数据库关系图,如图2.4所示: 图2.4 BankDB数据库关系图 2.4 实训四:创建触发器和插入测试数据 (1)创建级联触发器 1.创建tr_InsertDealInfo触发器 在交易信息表BankDealInfo中创建一个tr_InsertDealInfo触发器,当增加一条交易信息时,修改相应银行卡的存款余额。使用游标,实现批量增加的级联更新。 创建触发器的代码如下: --判断触发器tr_InsertdealInfo是否存在,若存在,则删除 if (object_id('tr_InsertdealInfo','tr') is not null) drop trigger tr_InsertdealInfo go --在表bankdealinfo上创建一个触发器tr_InsertdealInfo create trigger tr_InsertdealInfo on bankdealinfo for insert as declare @type char(10),@sum money,@BDBCNo char(19); --创建一个游标cursor_BankDealinfo,指向inserted表 declare cursor_BankDealinfo cursor for select BDDealType,BDDealAcount,BDBCNo from inserted --打开游标 open cursor_BankDealinfo --取游标中各个字段的值复制给各个变量 fetch next from cursor_BankDealinfo into @type,@sum,@BDBCNo while @@fetch_status=0 begin --判断交易记录里是存入还是支取,及时更新银行卡表的存款余额 if(rtrim(ltrim(@type))='存入') update bankcard set BCExistBalance=BCExistBalance+@sum where BCNo=@BDBCNo; if(rtrim(ltrim(@type))='支取') update bankcard set BCExistBalance=BCExistBalance-@sum where BCNo=@BDBCNo; fetch next from cursor_BankDealinfo into @type,@sum,@BDBCNo end --关闭游标 close cursor_BankDealinfo --释放游标 deallocate cursor_BankDealinfo go 2.创建tr_DeldealInfo触发器 在交易信息表创建一个tr_DeldealInfo触发器,当删除一条交易信息时,修改相应银行卡的存款余额。使用游标,实现批量删除的级联更新。 创建触发器的代码如下: --判断触发器tr_DeldealInfo是否存在,若存在,则删除 if (object_id('tr_DeldealInfo','tr') is not null) drop trigger tr_DeldealInfo go --在表bankdealinfo上创建一个触发器tr_InsertdealInfo create trigger tr_DeldealInfo on bankdealinfo for delete as declare @type char(10),@sum money,@BDBCNo char(19); --创建一个游标cursor_BankDealinfo,指向deleted表 declare cursor_BankDealinfo cursor for select BDDealType,BDDealAcount,BDBCNo from deleted --打开游标 open cursor_BankDealinfo --取游标中各个字段的值复制给各个变量 fetch next from cursor_BankDealinfo into @type,@sum,@BDBCNo while @@fetch_status=0 begin --判断交易记录里是存入还是支取,及时更新银行卡表的存款余额 if(rtrim(ltrim(@type))='存入') update bankcard set BCExistBalance=BCExistBalance-@sum where BCNo=@BDBCNo; if(rtrim(ltrim(@type))='支取') update bankcard set BCExistBalance=BCExistBalance+@sum where BCNo=@BDBCNo; fetch next from cursor_BankDealinfo into @type,@sum,@BDBCNo end --关闭游标 close cursor_BankDealinfo --释放游标 deallocate cursor_BankDealinfo go 3.创建tr_UpdatedealInfo触发器 在交易信息表创建一个tr_UpdatedealInfo触发器,当更新一条交易信息时,修改相应银行卡的存款余额。使用游标,实现批量删除的级联更新。 创建触发器的代码如下: --在交易信息表中插入一个触发器,使用游标,当更新一个交易信息,修改银行卡的存款余额 if (object_id('tr_UpdatedealInfo','tr') is not null) drop trigger tr_UpdatedealInfo go create trigger tr_UpdatedealInfo on BankDealInfo for update as declare @type char(10),@sum money,@BDBCNo char(19); --先进行删除操作 --创建一个游标,指向deleted表 declare cursor_delete_BankDealinfo cursor for select BDDealType,BDDealAcount,BDBCNo from deleted --打开游标 open cursor_delete_BankDealinfo fetch next from cursor_delete_BankDealinfo into @type,@sum,@BDBCNo while @@fetch_status=0 begin --判断交易记录里是存入还是支取,及时更新银行卡表的存款余额 if(rtrim(ltrim(@type))='存入') update BankCard set BCExistBalance=BCExistBalance-@sum where BCNo=@BDBCNo; if(rtrim(ltrim(@type))='支取') update BankCard set BCExistBalance=BCExistBalance+@sum where BCNo=@BDBCNo; fetch next from cursor_del_BankDealinfo into @type,@sum,@BDBCNo end close cursor_delete_BankDealinfo deallocate cursor_delete_BankDealinfo --再进行增加操作 --创建一个游标,指向inserted表 declare cursor_insert_BankDealinfo cursor for select BDDealType,BDDealAcount,BDBCNo from inserted --打开游标 open cursor_insert_BankDealinfo fetch next from cursor_insert_BankDealinfo into @type,@sum,@BDBCNo while @@fetch_status=0 begin --判断交易记录里是存入还是支取,及时更新银行卡表的存款余额 if(rtrim(ltrim(@type))='存入') update BankCard set BCExistBalance=BCExistBalance+@sum where BCNo=@BDBCNo; if(rtrim(ltrim(@type))='支取') update BankCard set BCExistBalance=BCExistBalance-@sum where BCNo=@BDBCNo; fetch next from cursor_insert_BankDealinfo into @type,@sum,@BDBCNo end close cursor_insert_BankDealinfo deallocate cursor_insert_BankDealinfo go 4.创建tr_InsertDatedealInfo触发器 在交易信息表创建一个tr_InsertDatedealInfo触发器,当在交易信息表中插入一条交易信息时,如果交易日期早于开户日期时,禁止插入。使用游标,实现批量删除的级联更新。 创建触发器的代码如下: --在交易信息表中插入一个触发器,如果交易日期早于开户日期,禁止插入 use BankDB; if (object_id('tr_InsertDatedealInfo','tr') is not null) drop trigger tr_InsertDatedealInfo go create trigger tr_InsertDatedealInfo on BankDealInfo for insert as declare @BDDealDate date,@BDBCNo char(19); --创建一个游标,指向inserted表 declare cursor_insertBankDealinfo cursor for select BDDealDate,BDBCNo from inserted --打开游标 open cursor_insertBankDealinfo --此时游标处于活动状态,只想查询结果的第一个元组之前 --取游标中各个字段的值复制给各个变量 fetch next from cursor_insertBankDealinfo into @BDDealDate,@BDBCNo while @@fetch_status=0 begin if(DATEDIFF(DAY,(select BCOpenDate from BankCard where BCNo=@BDBCNo),@BDDealDate)<=0) begin --raiserror('交易日期不得早于开户日期',1,1) print '交易日期不得早于开户日期' rollback transaction end fetch next from cursor_insertBankDealinfo into @BDDealDate,@BDBCNo end --关闭游标 close cursor_insertBankDealinfo --删除游标引用 deallocate cursor_insertBankDealinfo go 5.创建tr_ReglossdealInfo触发器 在交易信息表创建一个tr_ReglossdealInfo触发器,当银行卡挂失之后,不能对交易信息表进行插入操作。使用游标,实现批量删除的级联更新。 创建触发器的代码如下: --在交易信息表中插入一个触发器,当银行卡挂失了之后,不能进行交易 if (object_id('tr_ReglossdealInfo','tr') is not null) drop trigger tr_ReglossdealInfo go create trigger tr_ReglossdealInfo on bankdealinfo for insert as declare @BDBCNo char(19),@BDBCNo1 char(19); select @BDBCNo1=BCNo from BankCard where BCRegLoss ='是' --创建一个游标,指向inserted表 declare cursor_BankDealinfo cursor for select BDBCNo from inserted --打开游标 open cursor_BankDealinfo --取游标中各个字段的值复制给各个变量 fetch next from cursor_BankDealinfo into @BDBCNo while @@fetch_status=0 begin if(@BDBCNo=@BDBCNo1) begin --raiserror('交易日期不得早于开户日期',1,1) print '银行卡已挂失,操作不成功!' rollback transaction end fetch next from cursor_BankDealinfo into @BDBCNo end close cursor_BankDealinfo deallocate
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 小学其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服