SQL与存储过程
强化训练题库十
如果训练了五套题库后,就应该训练存储过程啦
数据库文件请到百度网盘下载:pan.baidu/s/1mgiIMtq
答案请在百度文库中……
0:数据库还原下发数据库备份文件后,未能在3分钟之内还原的扣5分
ATM表结构如下
CREATE TABLE userInfo --操作员,ATM机器信息表
(
userID uniqueidentifier NOT NULL, --操作员编号,uniqueidentifier,主键
userType V ARCHAR(20) NOT NULL, --操作员类型,必填,ATM取款机,营业员
code V ARCHAR(50) NULL --代号信息操作员或营业员工号
)
CREATE TABLE customerInfo --客户信息表
(
customerID INT IDENTITY(1,1), --顾客编号,自动编号(标识列),从开始,主键customerName V ARCHAR(20) NOT NULL, --开户名必填
PID CHAR(18) NOT NULL, --必填,只能是位或位,身份证号唯一约束
telephone CHAR(13) NOT NULL, --,必填,固定电话格式为:xxxx-xxxxxxxx,
13位;或手机号:11位
customerAddress V ARCHAR(50) --居住地址,可选输入
)
CREATE TABLE cardInfo --银行卡信息表
(
cardID CHAR(19) NOT NULL, --卡号格式为:1010 3576 xxxx xxx开始
curType CHAR(5) NOT NULL, --货币,必填,默认为RMB
savingType CHAR(8) NOT NULL, --存款种类,活期/定活两便/定期
openDate DATETIME NOT NULL, --开户日期,必填,默认为系统当前日期openMoney MONEY NOT NULL, --开户金额,必填,不低于1元
balance MONEY NOT NULL, --余额必填,不低于1元,否则将销户
pass CHAR(6) NOT NULL,--密码,必填,位数字,默认为888888
IsReportLoss BIT NOT NULL,--是否挂失必填,是/否值,默认为”否”
customerID INT NOT NULL --顾客编号必填,表示该卡对应的顾客编号,一位顾客
可以办理多张卡
)
备注:数据库中提供产生卡号的存储过程proc_randCardID
本次比赛的业务在存储过程内部可以不考虑事务,在调用的时候可以用事务。
CREATE TABLE transInfo --交易信息表
(
transID INT IDENTITY(1,1),
OpID uniqueidentifier NULL, --必填,外健操作员编号
OpType V ARCHAR(20) NOT NULL, --必填,只能是ATM取款机,营业员
transDate DATETIME NOT NULL, --交易日期必填,默认为系统当前日期transType V ARCHAR(20) NOT NULL, --必填,只能是存入/支取
cardID CHAR(19) NOT NULL, --必填,外健,可重复索引
transMoney MONEY NOT NULL, --交易金额必填,大于0
curTransID V ARCHAR(500) NULL,--转帐操作对应的交易号(见业务需求说明)remark V ARCHAR(50) --备注可选输入,其他说明
)
CREATE TABLE LogInfo --日志信息表
(
logID INT IDENTITY(1,1),
opID uniqueidentifier NOT NULL, --必填,外健操作员编号
opType V ARCHAR(50) NOT NULL, --必填,只能是ATM取款机,营业员
opDate DATETIME NOT NULL, --操作日期必填,默认为系统当前日期
transType V ARCHAR(50) NOT NULL, --必填,只能是存入/支取/转帐/开户/销户/挂失/密码/其他
remark V ARCHAR(50)
)
业务要求说明:
ATM取款机设计时要求完成存款,取款,转帐,挂失等功能,其中存款,取款,转帐操作需要记录交易信息(tranInfo),存款,取款,转帐,开户,销户,挂失,修改密码操作都需要记录日志信息(在logInfo表中)。
其中转帐操作时需要将每笔的交易号记录在相对应的交易记录的交易号字段中,如卡号1010 3576 1212 1134转出3000元到其他三个卡中,如1010 3576 1212 1133,1010 3576 1212 1233,1010 3576 1212 1333,需要在交易表中生成四条记录。交易号对应多个交易时逗号分隔,如下图
这样就可以记录每一个转帐操作中记录对应的取出,存入交易记录。即交易号字段不空,表示交易为为转账操作。
sql存储过程实例
题目:
100:要求:写一个存储过程usp_LostCard,模拟一个营业员给一个持卡客户办理挂失帐号(要求全部完成相关的业务;输入参数为opID(操作员),CardID(卡号)。)---5分
101:要求:写一个存储过程usp_InsertATMUsersData,对userInfo表模拟插入用户记录,每种用户类型(ATM取款机,营业员)各5条(要求使用循环),如下图:---5分
102:要求:写一个存储过程usp_InsertATMCustomerData,对customerInfo表模拟插入客户记录3条(要求使用循环),如下图:---5分
103:要求:写一个存储过程usp_InsertATMCardInfoData,对CardInfo表模拟插入卡记录(相当于要求给每一位客户办理一个新卡,但其他业务不需要实现),如下图:---5分
104:要求:写一个存储过程usp_InsertATMCardInfoAsTypeData,对CardInfo表模拟插入卡记录(相当于要求给每一位客户办理一个要求的存款种类(如活期/定活两便/定期)的新卡,其他业务不需要实现,输入参数要求为存款种类),如下图:---5分
105:要求:写一个存储过程usp_MoneyToCustomer,模拟一个营业员或一台ATM取款机给一个持卡客户办理取款业务(要求全部完成相关的业务,输入参数为opID(操作员或柜机),CardID(卡号,金额等))---5分
106:要求:写一个存储过程usp_MoneyFromCustomer,模拟一个营业员给一个持卡客户办理存款业务(要求全部完成相关的业务,输入参数为opID(操作员或柜机),CardID(卡号,金额等))---5分
107:要求:写一个存储过程usp_MoneyFromToCustomer,模拟一个营业员给一个持卡客户办理转帐业务,给另外一个卡转帐(要求全部完成相关的业务,输入参数为opID(操作员或柜机),outCardID(转出卡号),inCradID(转入帐号),money(金额)等)-5分
108:要求:写一个存储过程usp_ATM108,模拟一个营业员给一个持卡客户办理修改密码业务(要求全部完成相关的业务,输入参数为opID(操作员),CardID(卡号),oldPass (旧密码),newPass(新密码)等)---5分
109:要求:写一个存储过程usp_ClearDataBaseAllData,删除userInfo,customerInfo,cardInfo,transInfo,LogInfo中所有的数据。---5分
110:要求:写一个存储过程usp_LostCardQueryDate,模拟一个营业员给一个持卡客户查询办理挂失帐号的时间(输入参数为CardID(卡号))---5分
111:要求:写一个存储过程usp_MoneyTransferToCustomer,模拟一个营业员给一个持卡客户办理转帐业务,给另外几个卡各转帐1000元(要求全部完成相关的业务,输入参数为opID(操作员或柜机),outCardID(卡号),inCradID,inCradID为以逗号分隔)-5分
112:要求:写一个存储过程usp_GetCurTypeStatCount,查询按照货币类型分别为(RMB 人民币,EUR欧元,GBP英镑,USD美元)的卡的数量。(一条SQL语句完成)-5分
113:要求:写一个存储过程usp_GetPID1518Stat,查询客户的身份证号是15位与身份证号是18 位的数量的差(要求使用返回值返回结果,并且要求写出调用该存储过程的步骤)。-5分
114:要求:写一个存储过程usp_GetTelStatCount,查询用户的电话中填写的是手机的用户数,是固定电话的用户数(一条SQL语句完成)。-5分
200:要求:写一个存储过程usp_GetTransInfoStatCount,查询交易记录总次数,存入的交易记录总次数,支取的交易记录总次数(一条SQL语句完成)。-5分

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。