还剩2页未读,继续阅读
文本内容:
提示不要把答案先发给学生,实验结束后再公布答案要让学生先自己思考做题,老师对学生不会的题目适当提示,一题题解决困惑实验存储过程练习•参考代码10/*继续使用实验创建的银行储蓄数据库,客户信息表、账户信息customerinfo表、交易信息表三个表的表结构见表易信表*/accountinfo transInfo-20题存款存储过程1-创建存储过程的语句--定义存储过程create procp_ck两个输入参数@zh char19,@je decimal202,--——*不蛤余柄@mess varchar50output U-1-存储过套语法中必须有的关键字asbeginset nocounton--判断存款大于元if@je1beginif existsselectaccountID from accountinfo正常where accountID=@zh andaccountstate=beginINSERT INTOtransInfoaccountID,transType,transMoney;存入;-交易信息表插入存款记录VALUES@zh@je transInfoupdateaccountinfo setaccountMoney=accountMoney+@je--更新卡余额WHERE accountID=@zh廿存款成功!账号存入元select@mess+@zh+ltrimstr@je+‘endelse账号不存在,或已经挂失!select@mess=endelse存款金额不可以小于元,select@mess=End龙象资源告理器00LAPTOP-NMGPMIMM\sql2008SQL S田一I系统数据库+数是座•二花日U bank」数据库关系图®囹口表因〉视图田口同义词0一1可编程性创建成功后在对象资源管理器中查看星」・db°p_ck以下为执行存储过程的语句,不要与创建存储过程的语句一起执行--给账号存款元100550declare@ms varchar100exec p_ck U005\50,@ms outputprint@ms存款成功!账号存入元100550执行结果:J消息-执行存储过程前后分别查看两个表中数据select*from accountinfowhere accountID=*1005*select*from transInfowhere accountID=*1005*--执行存储过程之前两个表中数据口结果消息accountIDsavingType moneyType openDate openMoneyaccountMoneypasswordaccountstate cus-活期人民币正常110052023-06-1510:45:
25.
27340.0040006666665transIDtransDate accountIDtransTypetransMoney bz-执行存储过程之后两个表中数据accountID savingTypemoneyTypeopenDateopenMoney passwordaccountstatecus1005活期人民币2023-06-1510:45:
25.
27340.00accountMoney9000666666正常51J」transID transDateaccountID transTypetransMoney40bz■■■■■■■■存入2023-05-0600:00:00000100500NULL1■■■■■■I■■132023-06-1511:27:
25.0331005存入5000NULL]存入1|5I2023-05-0600:00:
00000100540.00NULL题生成账号存储过程2口结果3消息/*****随机产生十九位账号*//*****第一种方式创建存储过程不定义变量*/create procp_zh1@randZH chart19output asselect@randZH=,60138261050r+right0000000+LTRIMstrceilingRand*100000005/*****第二种方式创建存储过程定义变量*/create procp_zh2@randZH char19output begindeclare@ii intdeclare@cc char7select@ii=ceilingRAND*10000000-生成随机数、取整set@cc=LTRIMstr@ii-转换成字符串、去左空格set@cc=right,0000000,+@cc,7-不足位左侧补、取右面位SET@randZH=60138261050r+@ccEnd对象资源言理器▼4X▼回品蹒(卜哥雪00LAPTOP-NMGPMIMM\sql2008SQL SAS L3数据库a二i系统数据库()±一数据库快照0IJ bank□数据库关系图®田表囹口视图国LJ同义词日口可编程性存储过程二系统存储过程®国M dbo.p ck®目dbo.p zhl坦用dbo.p_zh2^在对象资源管理器中“存储过程”上右击刷新/**以下为测试生成账号存储过程语句,不要与创建存储过程的语句一起执行**/declare@cc char19exec p_zh1@cc outputselect@ccexec p_zh2@cc outputselect@cc里结果金消息(无列名)这是测试的一组结果,随机生成,每次不同(无列名)3题开户存储过程-查看三张表列名和表中数据select*from customerinfoselect*from accountinfoselect*from transInfo-创建存储过程的语句create procedurep_kh@name varchar8,@cID varchar18,@pho varcharf11,@add varchar100=n,@je decimal20,2,@type varchar8,@mess varchar100outputASbegin定义变量存账号和客户编号DECLARE@zh varchar19,@khbh int--调用存储过程获得随机账号EXECUTE p_zhl@zh OUTPUTwhileexistsSELECT*FROM accountinfo—账号重复则重新产生WHERE accountID=@zhEXECUTE p_zhl@zh OUTPUT-用身份证号判断用户是否存在,不存在则在表增记录customerinfoIF notexistsselect:from customerinfo where cardID=@cIDINSERT INTOcustomerInfocustomerID,customerName,cardID,phone,address selectmaxcustomerID+1,@name,@cID,@pho,@add fromcustomerinfo-用身份证号查询客户编号select@khbh=customerTD fromcustomerinfowherecardTD=@cID--向账户信息表增加记录accountinfoINSERT INTOaccountInfoaccountID,savingType,openMoney,accountMoney,customerIDVALUES@zh,@type,@je,@je,@khbh-交易信息表插入记录,开户金额为第一笔存入金额INSERT INTOtransInfoaccountID,transType,transMoney;存入;VALUES@zh@je--输出开户成功信息,开户成功,系统为您产生的随机账号为了select@mess=+@zh在对象资源管理器中“存储过程”上右击刷新End/*以下为执行存储过程的语句,不要与创建存储过程的语句一起执行为以下用户开一个新账户李莹,身份证号手机地址江苏南通,123456789,:78901,开户金额存款类型活期*/1001,declare@mess varcharlOO李莹?江苏南通江活期;EXEC p_kh123456789:78901;1@mess outputselect@mess13结果助消息无列名执行结果1开户成功,系统为您产生的随机账号为1-查看表中数据变化代码:select fromcustomerlnfo select*fromaccountinfoselect*from transInfo。