版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数据库技术与开发项目实训设计报告项目名称:银行ATM存取款机系统设计与实现姓 名:张燕斌学 号:专 业:软件12-2指导教师:余金林完成日期:2014.11.21目录1、实训三:创建数据库5(1) 创建数据库(1学时)5(2) 创建各个数据表及相关的约束(2学时)6(3) 添加外键约束和生成数据库关系图(1学时)122、实训四:创建触发器和插入测试数据15(1) 创建级联触发器(2学时)15(2) 插入数据表的测试数据(2学时)203、实训五:模拟常规业务25(1) 修改客户密码25(2) 办理银行卡挂失25(3) 统计银行资金流通余额和盈利结算26(4) 查询本周开户信息28(5) 查询本月
2、单次交易金额最高的卡号和总交易金额最高的卡号29(6) 查询挂失客户29(7) 催款提醒业务304、实训六:创建、使用视图32(1) 输出银行客户记录视图VW_userInfo32(2) 输出银行卡记录视图VW_CardInfo32(3) 输出银行卡交易记录视图VW_TransInfo33(4) 根据客户登录名查询该客户账户信息VW_OneUserInfo345、实训七:存储过程实现业务处理36(1) 完成存款或取款业务36(2) 产生随机卡号42(3) 完成开户业务44(4) 分页显示查询交易数据49(5) 打印客户对账单50(6) 统计未发生交易的账户54(7) 统计银行卡交易量和交易额5
3、86、实训八:利用事务实现转账677、心得体会741、实训三:创建数据库(1) 创建数据库(1学时)使用Create DataBase语句创建“ATM存取款机系统”数据库BankDB,数据文件和日志文件保存在指定目录下(建议建立一个文件夹,用于存放该实训项目的所有相关T-SQL源文件),文件增长率为15%。-创建BankDB数据库,数据库文件和日志文件均保存在-文件夹G:2014年工程案例项目银行ATM存取款机系统下-文件增长率均为15%,数据文件起始大小为5MB,日志文件起始大小为2MB,增长率均为15%create database BankDB on primary(name=NBank
4、DB,filename=ND:2014年工程案例项目银行ATM存取款机系统BankDB.mdf, size=5MB, filegrowth=15%)log on(name=NBankDB_log,filename=ND:2014年工程案例项目银行ATM存取款机系统BankDB_log.ldf, size=2MB, filegrowth=15%)图1.BankDB数据库(2) 创建各个数据表及相关的约束(2学时)根据实训1设计出的“银行ATM存取款机系统”PDM模型的数据表结构,使用Create Table语句创建表结构。根据银行业务,分析表中每个列相应的约束要求,为每个表添加各种约束。要求创建
5、表时要求检测是否存在表结构,如果存在,则先删除再创建。建议选择2张表的T-SQL语句进行修改,先创建表结构里的各个字段,再用Alter Table语句为每个表添加各种约束图2BankDb数据库关系图use BankDB;go-判断银行业务类型表是否存在,若存在则删除if exists(select * from sysobjects where id=OBJECT_ID(NBankBusinessType) drop table BankBusinessType-创建银行业务类型表,包含银行业务类型编号BBTId,银行业务类型名称BBTName,银行业务描述BBTCommentcreate t
6、able BankBusinessType(-银行业务类型编号BBTIdBBTId int identity(1,1) primary key not null,-银行业务类型名称BBTNameBBTName char(100) not null,-银行业务描述BBTCommentBBTComment varchar(100);Go图3. BankBusinessType-判断银行卡客户信息表是否存在,若存在则删除if exists(select * from sysobjects where id=OBJECT_ID(NBankCustomer) drop table BankCustome
7、r-创建银行客户信息表,包含客户编号BCID,客户姓名BCName,客户身份证BCICNo,客户联系电话BCTel、客户居住地址BCAddrcreate table BankCustomer(-客户编号BCIDBCId int identity(1,1) primary key not null,-客户姓名BCNameBCName char(20) not null,-客户身份证BCICNo,定义身份证号前位必须是数字,后位可以是数字或者XBCICNo char(18) not null check(left(BCICNo,17) like 0-90-90-90-90-90-90-90-90-
8、90-90-90-90-90-90-90-90-9 and (right(BCICNo,1) like 0-9 or right(BCICNo,1) like X),-定义联系方式,分为座机号码和手机号码:座机号码由数字和“-”构成,由以下两种格式:XXX-XXXXXXXX或者XXXX-XXXXXXX。-手机号码由11位数字构成,且前2位必须是13或者15开头BCTel varchar(20) not null check(BCTel like 0-90-90-90-9_0-90-90-90-90-90-90-9 orBCTel like 0-90-90-9_0-90-90-90-90-90-
9、90-90-9 or BCTel like 1350-90-90-90-90-90-90-90-90-9),-定义客户地址BCAddr varchar(100);Go图4. BankCustomer-判断银行卡表是否存在,若存在,则删除银行卡BankCard表if exists(select * from sysobjects where id=object_id(NBankCard) drop table BankCard-建立银行卡信息create table BankCard(-卡号必须符合位数字构成,前位为3576,后位是随机产生且唯一,每位必须有一个空格BCNo char(19) p
10、rimary key check(BCNo like 1010 3576 0-90-90-90-9 0-90-90-90-9),-密码,开户默认为BCPwd char(6) not null default(),-币种,为RMB类型BCCurrency char(5) not null default(RMB),-存款类型BCBBTId int not null,-开户日期,默认当日BCOpenDate date not null default(getdate(),-开户金额,不得小于元BCOpenAmount money not null check(BCOpenAmount=1),-是否
11、挂失,默认为否BCRegLoss char(2) default(否),-客户编号BCBCId int not null,-资金平衡BCExistBalance money not null);Go图5. BankCard-判断交易信息BankDealInfo是否存在,若存在则删除if exists(select * from sysobjects where id=OBJECT_ID(NBankDealInfo) drop table BankDealInfo-创建交易信息表create table BankDealInfo(-交易编号为自动增长列BDNo int identity(1,1)
12、 primary key,-卡号,银行的卡号由19位数字组成BDBCNo char(19) not null,-交易日期,默认为当日BDDealDate Date not null default(getdate(),-交易金额,必须大于0元BDDealAcount money not null check(BDDealAcount0),-交易类型,有种存入和支取BDDealType Char(10) not null check(BDDealType=存入 or BDDealType=支取),-交易备注BDDealComment varchar(100);图6. BankDealInfo(3
13、) 添加外键约束和生成数据库关系图(1学时)添加子表外键约束及生成数据库关系图-建立表之间的外键约束关系alter table bankcardadd constraint fk_BC_BBT foreign key(BCBBTId) references bankbusinesstype(bbtid);alter table bankcardadd constraint fk_BC_BC foreign key(BCBCId) references BankCustomer(BCId);alter table bankDealInfoadd constraint fk_BDI_BC fore
14、ign key(BDBCNo) references BankCard(BCNo);图7. bankbusinesstype图8. BankCustomer图9.BankCard图10.BankDealInfo2、实训四:创建触发器和插入测试数据(1) 创建级联触发器(2学时)建议使用游标,实现批量增加的级联更新。-在交易信息表中插入一个触发器,使用游标当新增一个交易信息,修改银行卡的存款余额if (object_id(tr_InsertdealInfo,tr) is not null)drop trigger tr_InsertdealInfogocreate trigger tr_Inse
15、rtdealInfoon bankdealinfofor insertasdeclare type char(10),sum money,BDBCNo char(19);-创建一个游标,指向inserted表declare cursor_BankDealinfo cursor for select BDDealType,BDDealAcount,BDBCNo from inserted-打开游标open cursor_BankDealinfo-取游标中各个字段的值复制给各个变量fetch next from cursor_BankDealinfo into type,sum,BDBCNowhi
16、le fetch_status=0begin-判断交易记录里是存入还是支取,及时更新银行卡表的存款余额-去除左右空字符 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
17、,sum,BDBCNoend -关闭游标close cursor_BankDealinfo-释放游标deallocate cursor_BankDealinfogo-创建Delete触发器-在交易信息表中插入一个触发器,使用游标,当删除一个交易信息,修改银行卡的存款余额if (object_id(tr_DeldealInfo,tr) is not null)drop trigger tr_DeldealInfogocreate trigger tr_DeldealInfoon bankdealinfofor deleteasdeclare type char(10),sum money,BDB
18、CNo char(19);-创建一个游标,指向deleted表declare cursor_BankDealinfo cursor for select BDDealType,BDDealAcount,BDBCNo from deleted-打开游标open cursor_BankDealinfo-取游标中各个字段的值复制给各个变量fetch next from cursor_BankDealinfo into type,sum,BDBCNowhile fetch_status=0begin-判断交易记录里是存入还是支取,及时更新银行卡表的存款余额,去除左右空字符if(rtrim(ltrim(
19、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,BDBCNoend -关闭游标close cursor_BankDealinfo-释放游标deallocate cursor_BankDea
20、linfogo-创建Update触发器-update触发器-在交易信息表中插入一个触发器,使用游标当修改一个交易信息,修改银行卡的存款余额-在交易信息表中插入一个触发器,使用游标当修改一个交易信息,修改银行卡的存款余额if (object_id(tr_updatedealInfo,tr) is not null)drop trigger tr_updatedealInfogocreate trigger tr_updatedealInfoon bankdealinfofor updateasdeclare type char(10),sum money,BDBCNo char(19);-创建一
21、个游标,指向update表declare cursor_BankDealinfo cursor for select BDDealType,BDDealAcount,BDBCNo from inserted-打开游标open cursor_BankDealinfo-取游标中各个字段的值复制给各个变量fetch next from cursor_BankDealinfo into type,sum,BDBCNowhile fetch_status=0begin-判断交易记录里是存入还是支取,及时更新银行卡表的存款余额 -去除左右空字符if(rtrim(ltrim(type)=存入) update
22、 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,BDBCNoend -关闭游标 close cursor_BankDealinfo-释放游标deallocate cursor_BankDealinfogo图11. Ins
23、ert、Delete、update个触发器(2) 插入数据表的测试数据(2学时)使用T-SQL语句向每个表插入如下所示测试数据,要保证业务数据的一致性和完整性。use BankDB insert into BankBusinessType(BBTName,BBTComment)values(活期,无固定存期,可随时存取,存取金额不限的一种比较灵活的存款), (定活两便,事先不约定存期,一次性存入,一次性支取的存款), (通知,不约定存期,支取时需提前通知银行,约定支取日期和金额方能支取的存款), (整存整取1年,整笔存入,到期提取本息), (整存整取2年,整笔存入,到期提取本息), (整存整取
24、3年,整笔存入,到期提取本息), (零存整取1年,事先原定金额,逐月按约定金额存入,到期支取本息), (零存整取2年,事先原定金额,逐月按约定金额存入,到期支取本息), (零存整取3年,事先原定金额,逐月按约定金额存入,到期支取本息), (自助转账,银行ATM存取款机上办理银行卡之间互相划转)-select * from BankBusinessType表11BankBusinessType表测试数据-使用T-SQL语句向BankCustomer表中插入表12的数据:insert into BankCustomer(BCName,BCICNo,BCTel,BCAddr)values(张飞,包头
25、市昆区包钢五中), (关羽,x,0472_,包头市昆区阿尔丁大街)- select * from BankCustomer表12 BankCustomer表测试数据use BankDBdeclare time date-开户日期设置为当前日期近一个月的随机某一天(使用相应的日期函数和随机函数完成)select time=cast(dateadd(D,-(rand()*30),getdate() as date)insert BankCard (BCNo,BCPwd,BCCurrency,BCBBTId,BCOpenDate,BCOpenAmount,BCRegLoss,BCBCId,BCExi
26、stBalance)values(1010 3576 1234 5678,RMB,1,time,1000.00,否,1,1000.00)select time=cast(dateadd(D,-(rand()*30),getdate() as date)insert BankCard (BCNo,BCPwd,BCCurrency,BCBBTId,BCOpenDate,BCOpenAmount,BCRegLoss,BCBCId,BCExistBalance)values(1010 3576 1234 5688,RMB,2,time,1500.00,否,2,1500.00)go表13. BankCa
27、rd表测试数据-使用T-SQL语句向BankDealInfo表中插入表14的数据,要求交易日期设置为当前日期近半个月的随机某一天(使用相应的日期函数和随机函数完成)use BankDBdeclare time dateselect time=cast(DATEADD(DD,-(rand()*15),GETDATE() as date)insert BankDealInfo (BDBCNo,BDDealDate,BDDealAcount,BDDealType,BDDealComment)values(1010 3576 1234 5678,time,500.00,存入,单位1月工资)select
28、 time=cast(DATEADD(DD,-(rand()*15),GETDATE() as date)insert BankDealInfo (BDBCNo,BDDealDate,BDDealAcount,BDDealType,BDDealComment)values(1010 3576 1234 5678,time,1500.00,存入,单位2月工资)select time=cast(DATEADD(DD,-(rand()*15),GETDATE() as date)insert BankDealInfo (BDBCNo,BDDealDate,BDDealAcount,BDDealTyp
29、e,BDDealComment)values(1010 3576 1234 5678,time,600.00,支取,支付宝付款)select time=cast(DATEADD(DD,-(rand()*15),GETDATE() as date)insert BankDealInfo (BDBCNo,BDDealDate,BDDealAcount,BDDealType,BDDealComment)values(1010 3576 1234 5678,time,700.00,支取,刷卡消费)select time=cast(DATEADD(DD,-(rand()*15),GETDATE() as
30、 date)insert BankDealInfo (BDBCNo,BDDealDate,BDDealAcount,BDDealType,BDDealComment)values(1010 3576 1234 5688,time,3000.00,存入,单位1月工资)select time=cast(DATEADD(DD,-(rand()*15),GETDATE() as date)insert BankDealInfo (BDBCNo,BDDealDate,BDDealAcount,BDDealType,BDDealComment)values(1010 3576 1234 5688,time
31、,2800.00,存入,单位2月工资)select time=cast(DATEADD(DD,-(rand()*15),GETDATE() as date)insert BankDealInfo (BDBCNo,BDDealDate,BDDealAcount,BDDealType,BDDealComment)values(1010 3576 1234 5688,time,1600.00,支取,支付宝付款)select time=cast(DATEADD(DD,-(rand()*15),GETDATE() as date)insert BankDealInfo (BDBCNo,BDDealDat
32、e,BDDealAcount,BDDealType,BDDealComment)values(1010 3576 1234 5688,time,900.00,支取,刷卡消费) -select * from BankDealInfo表14. 表24BankDealInfo表测试数据3、实训五:模拟常规业务(1) 修改客户密码根据卡号修改指定2个客户的银行密码,其中第一个客户1010 3576 1234 5678密码修改为,第二个客户1010 3576 1234 5688修改为-根据卡号修改指定个客户的银行密码,其中第一个客户3576 1234 5678密码修改为,第二个客户3576 1234 5
33、688修改为use BankDB update BankCard set BCPwd= where BCNo=1010 3576 1234 5678 update BankCard set BCPwd= where BCNo=1010 3576 1234 5688-使用Select查询语句显示如下select BCNo as 卡号,BCPwd as 密码,BCCurrency as 货币类型,BCBBTId as 储蓄种类,BCOpenDate as 开户日期,BCOpenAmount as 开户金额,BCRegLoss as 是否挂失,BCBCId as 客户编号,BCExistBalanc
34、e as 存款余额from BankCard图15修改客户密码效果图(2) 办理银行卡挂失卡号为1010 3576 1234 5678的银行卡丢失,申请挂失,要求使用inner join语句use BankDB -修改卡号为3576 1234 5678的银行卡的BCRegLoss为是update BankCard set BCRegLoss = 是where BCNo = 1010 3576 1234 5688select BCNo as 卡号,BCPwd as 密码,BCCurrency as 货币类型,BBTName as 储蓄类型,BCOpenDate as 开户日期,BCOpenAmo
35、unt as 开户金额,BCRegLoss as 是否挂失,BCName as 客户姓名,BCExistBalance as 存款余额from bankcardinner join bankbusinesstype on bankcard.BCBBTId=bankbusinesstype.bbtidinner join BankCustomer on bankcard.BCBCId=BankCustomer.BCId图16办理银行卡挂失效果图(3) 统计银行资金流通余额和盈利结算存入代表资金流入,支取代表资金流出。计算公式:资金流通余额=总存入金额-总支取金额假定存款利率为千分之三,贷款利率为
36、千分之八。计算公式:盈利结算=总支取金额*0.008-总存入金额*0.003。要求创建一个存储过程proc_staticsBanlanceAndProfit,执行该存储过程-判断存储过程是否存在if exists(select * from sysobjects where name=proc_staticsBanlanceAndProfit )drop procedure proc_staticsBanlanceAndProfit go -建一个存储过程proc_staticsBanlanceAndProfitcreate procedure proc_staticsBanlanceAndP
37、rofitasdeclare InMoney money-存入总金额变量declare OutMoney money-支取总金额变量declare liutongyue money-(银行)资金流通余额变量declare yingliyue money-盈利结算变量-获取总存入金额和总支取金额select InMoney=SUM(BDDealAcount) from BankDealInfo where rtrim(ltrim(BDDealType)=存入select OutMoney=SUM(BDDealAcount) from BankDealInfo where rtrim(ltrim(
38、BDDealType)=支取-资金流通余额=总存入金额-总支取金额select liutongyue=InMoney-OutMoneyselect -盈利结算=总支取金额*0.008-总存入金额*0.003yingliyue=OutMoney*0.008-InMoney*0.003print 存入总金额:+rtrim(ltrim(str(InMoney)+RMB,支取总金额:+rtrim(ltrim(str(OutMoney)+RMB,银行流通余额:+rtrim(ltrim(str(liutongyue)+RMB,盈利余额:+rtrim(ltrim(str(yingliyue)+RMBgoex
39、ec proc_staticsBanlanceAndProfit图17. 存储过程运行结果图(4) 查询本周开户信息查询本周开户的卡号,显示该卡的相关信息,求时间差使用日期函数DateDiff(),求星期几使用日期函数DatePart(),账户状态列使用Case语句转换-求时间差使用日期函数DateDiff(),求星期几使用日期函数DatePart(),账户状态列使用Case语句转换。select BCNo as 卡号,BCName as 姓名,BCCurrency as 货币,BBTName as 储蓄类型,BCOpenDate as 开户日期,BCOpenAmount as 开户金额, B
40、CExistBalance as 存款余额,-BCRegLoss as 是否挂失case BCRegLosswhen 是then 挂失账户when 否then 非挂失账户endas 账户状态from bankcardinner join bankbusinesstype on bankcard.BCBBTId=bankbusinesstype.bbtidinner join BankCustomer on bankcard.BCBCId=BankCustomer.BCId-要求交易时间范围在本周,日期时间差在一个星期以内-由于随机插入时间的原因,本周内没有交易记录,所以把时间差扩大到15天wh
41、ere DATEDIFF(day,BCOpenDate,getdate()7 -and DATEPART(wk,getdate()=DATEPART(wk,BCOpenDate)图18本周开户信息(5) 查询本月单次交易金额最高的卡号和总交易金额最高的卡号 查询本月存、取款中单次交易金额最高的卡号信息要求使用子查询和distinct去掉重复的卡号,使用DateDiff()和DataPart()函数得到本月内的交易信息select distinct BCNo as 卡号,BCOpenDate as 开户日期,BCOpenAmount as 开户金额from BankCard-distinct去掉
42、重复的卡号,使用DateDiff()和DataPart()函数得到本月内的交易信息where DATEDIFF(month,BCOpenDate,getdate()2 and DATEPART(m,getdate()=DATEPART(m,BCOpenDate) and BCNo in-单次交易金额最高的卡号信息( select BDBCNO from BankDealInfo where BDDealAcount=(select max(BDDealAcount) from BankDealInfo) 图19本月交易金额最高的卡号(6) 查询挂失客户查询挂失账号的客户信息,分别利用子查询in
43、的方式或者内部连接inner join-子查询in的方式select BCName as 客户姓名,BCTel as 联系电话from BankCustomerwhere BCId in(select BCBCID from BankCard where BCRegLoss=是)-内部连接inner join语句select BCName as 客户姓名,BCTel as 客户电话from BankCustomer inner join BankCard on BankCustomer.BCId=BankCard.BCBCIDwhere BCRegLoss=是图20查询挂失客户(7) 催款提醒
44、业务根据某种业务(如代缴电话费、代缴手机费或房贷等)的需要,每个月末,查询出客户账户上余额少于2000元,由银行统一致电催款。-查询出客户账户上余额少于元,使用inner join内连接select BCName as 客户姓名,BCTel as 联系电话,BCExistBalance as 存款余额from BankCustomer inner join BankCard on BankCustomer.BCId=BankCard.BCBCIDwhere BCExistBalance2000图21催款提醒业务4、实训六:创建、使用视图(1) 输出银行客户记录视图VW_userInfo显示的列
45、名全为中文,要求先判断该视图是否存在,若存在,则先删除。-判断视图 VW_userInof 是否存在,若存在,则删除if exists(select * from sysobjects where name=VW_userInof )drop view VW_userInofgocreate view VW_userInofas select BCId as 客户编号,BCName as 开户名,BCICNo as 身份证号,BCTel as 电话号码,BCAddr as 居住地址from BankCustomergoselect * from VW_userInofgo图22输出银行客户记录
46、(2) 输出银行卡记录视图VW_CardInfo-判断视图VW_CardInfo是否存在,若存在,则删除if (object_id(VW_CardInfo) is not null) drop view VW_CardInfogocreate view VW_CardInfoas select BCNo as 卡号,BCName as 开户名,BCCurrency as 货币种类,BBTName as 存款类型,BCOpenDate as 开户日期,BCExistBalance as 存款余额,BCPwd as 密码,BCRegLoss as 是否挂失from bankcardinner jo
47、in bankbusinesstype on bankcard.BCBBTId=bankbusinesstype.bbtidinner join BankCustomer on bankcard.BCBCId=BankCustomer.BCIdgoselect * from VW_CardInfo;图23输出银行卡记录(3) 输出银行卡交易记录视图VW_TransInfoif (object_id(VW_TransInfo) is not null) drop view VW_TransInfogocreate view VW_TransInfoas -ORDER BY 子句在视图单独使用无效
48、,需在select后加一个Topselect Top 100 BDDealDate as 交易日期,BDDealType as 交易类型,BDBCNo as 卡号,BDDealAcount as 交易金额,BDDealComment as 备注from BankDealInfoorder by BDDealDate ascgoselect * from VW_TransInfo;图24输出银行卡的交易记录(4) 根据客户登录名查询该客户账户信息VW_OneUserInfo根据客户登录名(采用实名制访问银行系统)查询该客户账户信息的视图,利用SQL SERVER系统函数system_user获得
49、数据库用户名。-判断视图VW_OneUserInfo是否存在,若存在,则删除if (object_id(VW_OneUserInfo) is not null) drop view VW_OneUserInfogocreate view VW_OneUserInfoas select BCId as 客户编号,BCName as 开户名,BCICNo as 身份证号,BCTel as 电话号码,BCAddr as 居住地址 from BankCustomer where BCName=SYSTEM_USERgoselect *from VW_OneUserInfo;图25根据登录名查询账户信息
50、5、实训七:存储过程实现业务处理(1) 完成存款或取款业务根据银行卡号和交易金额实现银行卡的存款和取款业务。每一笔存款,取款业务都要计入银行交易账,并同时更新客户的存款余额。如果是取款业务,在记账之前,要完成下面两项数据的检查验证工作,如果检查不合格,那么中断取款业务,给出提示信息后退出。检查客户输入的密码是否正确。账户取款金额是否大于当前存款额加1。要求:取款或存款存储过程名为usp_takeMoney。编写一个存储过程完成存款和取款业务,并调用存储过程取钱或者存钱进行测试,测试数据是张飞的卡号支取100元(密码),关羽的卡号存入2100元。鉴于存款时客户不需要提供密码,在编写存储过程中,为
51、输入参数“密码”列设置默认值为Null。在存储过程中使用事务,以保证数据操作的一致性。测试时,可以根据客户姓名查出张三和李四的卡号。存储过程参考代码如下所示use BankDB-判断该存储过程是否存在,若存在,则删除if exists(select * from sysobjects where name=usp_takeMoney)drop procedure usp_takeMoneygo-创建存取款业务的存储过程create procedure usp_takeMoney(bcno char(19),money money,pwd char(6)=null)as-不返回受影响的行数set
52、 nocount on-声明一变量存放指定卡号的存款余额declare existBanlance money,count int -启动事务机制begin transet count = 0select existBanlance=BCExistBalance from BankCard where BCNo=bcno print 交易前,卡号+bcno+,余额为:+ltrim(str(existBanlance)print 交易正进行,请稍后.-如果输入参数pwd为空,则为取款业务,否则为存款业务if (pwd is not null)-办理取款业务begin-判断指定卡号和密码是否存在,若存在,则
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025~2026学年山东省青岛海尔学校高一下学期期末考试生物试卷
- 2026 四川 政府服务中心事业编易错点巩固训练卷含答案
- 2026年江苏省职业院校技能大赛-中职组(数字产品检测与维护赛项)考试题库(带答案)
- 2026年江苏省职业院校技能大赛-高职组(服装创意设计与工艺赛项)考试题库(带答案)
- 2018年中考《直角三角形与等腰三角形》回归考点练习试卷含答案
- (2026版)物业应急预案及演练计划
- 2026年ICU 急救技能竞赛理论试卷及答案
- 2026年esd知识考试题及答案
- 第8课灯光课件
- 第三单元课件复习课件
- 2026年广西农信社招聘笔试真题及答案解析
- 2026年新能源汽车维修工理论知识试卷完整版(精练)
- 陈旧性脊柱骨折后凸畸形
- 美团骑手承揽合同范本
- 精神疾病的常见病因与治疗
- 【新教材】外研版(2024)八年级上册英语各单元写作指导+范文
- 人参养荣汤对增强认知功能的影响
- 质检员试题及分析
- 2023-2024学年浙江省杭州市s9联盟高二(上)期中生物试卷
- 妇科肿瘤术后淋巴囊肿的预防与处理
- 二级学院学生会工作制度
评论
0/150
提交评论