文档详情

《数据库原理及应用-(SQLServer2008版)》唐国良蔡中民-第14章课案.ppt

发布:2017-05-24约1.91万字共203页下载文档
文本预览下载声明
from cardInfo GO select *from view_cardInfo --查看视图 视图查看结果如图14-18所示。 图14-18 查看view_ cardInfo 创建transInfo表的视图 if exists(select * from sysobjects where name=view_transInfo) drop view view_transInfo go create view view_transInfo-- --创建交易信息表视图 as select 交易日期=transDate,交易类型=transType, 卡号=cardID,交易金额=transMoney,备注=remark from transInfo go select * from view_transInfo --查看视图 视图查看结果如图14-19所示。 图14-19 查看view_transInfo 14.4.10 创建取钱或存钱存储过程 提示:取钱时要求提供密码,存钱时不用。取钱时需验证密码是否正确,然后向交易表transInfo中插入一条支取的交易信息即可。因为已在transInfo表上创建了Insert触发器,所以在transInfo表上做Insert操作时,会自动触发Insert触发器,检查余额是否够支取,并自动更新余额。 ------------------------10.1取钱或存钱的存储过程------------------- --存钱或取钱的存储过程proc_depositOrWithdrawCash if exists(select * from sysobjects where name=proc_depositOrWithdrawCash ) drop proc proc_depositOrWithdrawCash GO --存储过程参数:交易卡号,交易金额,交易类型,取款密码(默认为空) create procedure proc_depositOrWithdrawCash @IDcard char(19),--交易卡号 @m money,--交易金额 @type char(4),--交易类型 @inputPassword char(6)=--取款密码 AS set nocount on --不返回计数(表示受Transact-SQL语句或stored procedure 存储过程所影响的行数),可减少网络流量,提供性能。 print 交易正进行,请稍后...... if not exists(select * from cardInfo where cardID=@IDcard) --判断用户信息表中是否存在取钱或存钱的用户 begin raiserror(没有该用户,16,1) return end if(@type=支取) begin if((SELECT password FROM cardInfo WHERE cardID=@IDcard)@inputPassword ) begin raiserror(密码错误!,16,1) return --立即返回,退出存储过程 end DECLARE @myTransType char(4),@outMoney MONEY,@myCardID char(19) SELECT @myTransType=transType,@outMoney=transMoney ,@myCardID=cardID FROM transInfo where cardID=@IDcard DECLARE @mybalance money SELECT @mybalance=balance FROM cardInfo WHERE cardID=@IDcard if(@mybalance=@m+1) begin INSERT INTO transInfo(transType,cardID,transMoney) VALUES(@type,@IDcard,@m) --update cardInfo set balance=balance-@m WHERE cardID=@myCardID end else select * from cardInfo 如图14-8查看密码修改结果。 图14-8 密码修改结果 2. 银行卡挂失 --李博(卡号为1010 3576 1212 1134)因银行卡丢失,申请挂失 update cardInfo set IsReportLoss=1 where cardID=1010 3576 121
显示全部
相似文档