《MySQL数据库》实训5-4存储过程 - 答案_第1页
《MySQL数据库》实训5-4存储过程 - 答案_第2页
《MySQL数据库》实训5-4存储过程 - 答案_第3页
《MySQL数据库》实训5-4存储过程 - 答案_第4页
《MySQL数据库》实训5-4存储过程 - 答案_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实训5-4存储过程答案下载stu.sql文件,导入,在stu数据库完成下列存储过程的创建。创建存储过程p1,查询stu数据库表student表中所有数据。(无参数)DELIMITER$$CREATEPROCEDUREp1()BEGINSELECT*FROMSTUDENT;END$$DELIMITER;Callp1;创建存储过程p2,查询任意学号学生的姓名、课程号和成绩(学号为带入参数)。DELIMITER$$CREATEPROCEDUREp2(idCHAR(4))BEGINSELECTsname,cno,resultFROMstudentaJOINscorebONa.sid=b.sidWHEREa.sid=id;END$$DELIMITER;调用:CALLp2('0101');CALLp2('0201');创建存储过程p3,查询任意学号学生的姓名和性别(学号为带入参数),显示格式为:xxx是X生,如‘刘明是男生’。CREATEPROCEDUREp3(idCHAR(4))BEGINDECLAREname1VARCHAR(20);DECLAREsex1CHAR(2);SELECTsname,sexINTOname1,sex1FROMstudentWHEREsid=id;IFsex1='男'THENSELECTCONCAT(name1,'是男生');ELSESELECTCONCAT(name1,'是女生');ENDIF; END$$Callp3(‘0101’)创建存储过程p4,查询任意学号学生的姓名(学号为带入参数,姓名为带出参数)。DELIMITER$$CREATEPROCEDUREp4(INidCHAR(4),OUTname1CHAR(10)) BEGINSELECTsnameINTOname1FROMstudentWHERESID=id;END$$DELIMITER;CALLp4('0101',@NAME1);SELECT@NAME1;创建存储过程p5,根据系部名称查询查询返回该系部的学生人数(系部名称为带入参数,人数使用带出参数)。DELIMITER$$CREATEPROCEDUREp5(dnameCHAR(10),OUTnumint) BEGINSELECTcount(*)intonumFROMstudentWHEREdepartment=dname; END$$DELIMITER;CALLp5('信息工程系',@num);Select@num;创建存储过程p6,修改score表中成绩:三个带入参数(学号,课程名,新分数),将某学号某门课成绩修改为新分数。DELIMITER$$CREATEPROCEDUREp6(stuidCHAR(4),cno1CHAR(2),gradeINT(10))BEGINUPDATEscoreSETresult=gradeWHEREsid=stuidANDcno=cno1; END$$DELIMITER;Callp6(‘0101’,’01’,99);创建存储过程p7,删除score表中成绩:删除某学号某门课程成绩。(学号和课程号为带入参数)DELIMITER$$CREATEPROCEDUREp7(idchar(4),cno1CHAR(2)) BEGINDELETEFROMscoreWHEREsid=idANDcno=cno1; END$$DELIMITER;Callp7(‘0101’,’01’);8.创建带游标的存储过程p8,其功能是利用游标逐行浏览返回某个学号的学生学号,课程号,成绩(学号为带入参数)。DELIMITER$$CREATEPROCEDUREp8(idCHAR(4))BEGINDECLAREsid1CHAR(4);DECLAREcno1CHAR(2);DECLAREresult1FLOAT;DECLAREFOUNDBOOLEANDEFAULTTRUE;--初始化游标循环变量DECLAREsc_cursorCURSORFORSELECTsid,cno,resultFROMscorewheresid=id;DECLARECONTINUEHANDLERFORNOTFOUNDSETFOUND=FALSE;--若无;数返回,程序继续,并将变量FOUND设为fa1seOPENsc_cursor;FETCHsc_cursorINTOsid1,cno1,result1;WHILEFOUNDDOSELECTsid1,cno1,result1;FETCHsc_cursorINTOsid1,cno1,result1;ENDWHILE;CLOSEsc_cursor;END$$DELIMITER;调用方式如下:CALLp8('0101');sqlyog创建存储过程注意事项1.要定义delimiter//,意思是用//作为一段语句的结束符。2.使用第三方mysql客户端sqlyogent.exe,一定要在数据库目录里边的存储过程右键选择新建存储过程,然后在右边弹出的窗口里键入你的存储过程语句,在普通查询分析器输入无效。3.如果存储过程的参数如果是输入中文的话,要在定义存储过程的后面加上charactersetgbk这个编码,不然调用存储过程使用中文参数的时候会出错,如:create

procedurecountpro(outa_outint,inb_datedate,inunit_namevarchar(45)charactersetgbk)

4.如果你的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论