文档详情

《数据库原理及应用教程-MySQL8.0》课件 第8章 MySQL编程.ppt

发布:2025-04-17约9.62千字共45页下载文档
文本预览下载声明

8.3.2用户定义函数IFaver1=aver2/*IF…ELSE语句的应用*/THENRETURNcn1;ELSERETURNcn2;ENDIF;END//【例8-17】判断C001和C002号课哪个平均成绩高。USEteaching;SELECTaverage1(C001,C002)AS平均成绩高的课程;8.3.2用户定义函数4.删除函数可以通过可视化管理工具的菜单界面、也可以通过SQL语句删除用户自定义函数。【例8-18】通过DROPFUNCTION语句删除average函数。USEteaching;DROPFUNCTIONaverage;8.4存储过程存储过程就是一个具有独立功能的子程序,以特定的名称存储在数据库中。8.4.1存储过程概述存储过程是SQL语句和可选流程控制语句的预编译集合,它以一个名称存储并作为一个单元处理,能够提高系统的应用效率和执行速度。存储过程是一种独立存储在数据库内的对象,可以接受输入参数、输出参数,可以返回单个值或多个结果集,也可以完成数据库中数据更新,由应用程序通过调用执行。8.4.1存储过程概述存储过程的优点:(1)模块化程序设计。只需创建一次,可在程序中调用任意次。可由在数据库编程方面有专长的人员创建,并可独立于程序源代码而单独修改。(2)加快SQL语句的执行速度。创建存储过程时对其进行分析和优化并预先编译好放在数据库内,减少编译语句所花的时间。(3)减少网络流量。一条执行过程代码的单独语句。(4)更高地安全性。可以授予用户执行存储过程的权限,而不授予其直接访问数据库对象(表、视图等)的权限。8.4.2创建存储过程MySQL创建存储过程的SQL语句语法格式如下:CREATEPROCEDUREprocedure_name([IN|OUT|INOUT][parameter_namedata_type][,…n])BEGINprocedure_body;END8.4.2创建存储过程【例8-19】在teaching库创建无参存储过程,查询每个学生的平均成绩。USEteaching;DELIMITER//CREATEPROCEDUREstudent_avg()BEGINSELECTsno,avg(score)asavgscoreFROMscGROUPBYsno;END//8.4.2创建存储过程【例8-20】在teaching库创建带输入参数的存储过程,查询某个学生的基本信息。USEteaching;DELIMITER//CREATEPROCEDUREGetStudent(numberchar(10))BEGINSELECT*FROMstudentWHEREsno=number;END//8.4.2创建存储过程【例8-21】在teaching库创建带输入参数的存储过程,修改某个学生某门课的成绩。USEteaching;DELIMITER//CREATEPROCEDUREUpdate_score(numberchar(10),cnchar(4),sc1int)BEGINUPDATEscSETscore=sc1WHEREsno=numberandcno=cn;END//8.4.2创建存储过程【例8-22】在bankcard数据库中使用流程控制语句创建存储过程。假设今天银行有活动,如果今天某账号交易支出总金额超过3000元,则奖励其10元。USEbankcard;DELIMITER//CREATEPROCEDUREadd_10(ANOchar(20))BEGINIF(SELECTSUM(Expense)FROMTrecordWHERETDate=CURDATE()ANDAccNO=ANO)=3000THENUPDATEAccountSETBalance=Balance+10WHEREAccNO=ANO;INSERTINTOTrecord(TDate,AccNO,Income,Abstract)VALUES(CURDATE(),ANO,10,银行活动奖励);ENDIF;END//8.4.2创建存储过程【例8-23】在bankcard数据库创建带

显示全部
相似文档