版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
存储过程概述创建和执行存储过程管理存储过程存储函数事务第六章存储过程与事务学习目标掌握了解理解1掌握存储过程的创建、修改和执行、存储函数的创建和执行、事务处理的过程2理解存储过程的作用、事务的隔离级别3了解存储过程和存储函数、程序存储的类型MySQL程序设计基础6.1存储过程概述6.26.3创建和执行存储过程目录管理存储过程6.4存储函数6.56.6事务目录创建存储过程语法格式如下:CREATEPROCEDUREsp_name([proc_parameter[,...]])[characteristic...]routine_body其中:
proc_parameter:[IN|OUT|INOUT]param_nametypecharacteristic:LANGUAGESQL|[NOT]DETERMINISTIC|{CONTAINSSQL|NOSQL|READSSQLDATA|MODIFIESSQLDATA}|SQLSECURITY{DEFINER|INVOKER}|COMMENT'string'routine_body:ValidSQLprocedurestatementorstatements6.3创建和执行存储过程6.3.1创建和执行不带参数的存储过程使用SQL语句在“学生选课”数据库中创建一个名为p_jiaoshi1的存储过程。该存储过程返回“教师”表中所有学历为“硕士研究生”的记录。对应的SQL语句如下:DELIMITER//CREATEPROCEDUREp_jiaoshi1()BEGINSELECT*FROMteacherWHEREtedu='硕士研究生';ENDEND//DELIMITER;实例6-1使用SQL语句执行例6-1中创建的存储过程。对应的SQL语句如下:执行结果如图6.1所示。执行结果如下所示:USE学生选课;CALLp_jiaoshi1();+------+--------+---------+------------+----------+|tno|tname|tgender|tedu|tpro|+------+--------+---------+------------+----------+|t002|李琦|男|硕士研究生|副教授||t003|王艳红|女|硕士研究生|讲师||t005|万丽|女|硕士研究生|助理讲师|+------+--------+---------+------------+----------+3rowsinset(0.00sec)实例6-21.创建带输入参数的存储过程输入参数是指由调用程序向存储过程传递的参数,在创建存储过程语句中定义输入参数,而在执行该存储过程中给出参数相应的值。6.3.2创建和执行带输入参数的存储过程(1)使用变量名传递参数值在执行存储过程的语句中,通过语句SET@parameter_name=value设定给参数的传递值,然后按位置传递参数。其语法格式如下:CALLprocedure_name([@parameter_name=value][,…n]);使用SQL语句在“学生选课”数据库中创建一个名为p_jiaoshi2的存储过程。该存储过程能根据用户给定的学历值查询返回“教师”表中对应的记录SET@输入学历='本科';CALLp_jiaoshi2(@输入学历);SET@输入学历='博士研究生';CALLp_jiaoshi2(@输入学历);实例6-4+------+--------+---------+------+------+|tno|tname|tgender|tedu|tpro|+------+--------+---------+------+------+|t001|吴亚飞|男|本科|讲师|+------+--------+---------+------+------+1rowinset(0.19sec)QueryOK,0rowsaffected(0.19sec)mysql>SET@输入学历='博士研究生';QueryOK,0rowsaffected(0.00sec)mysql>CALLp_jiaoshi2(@输入学历);+------+--------+---------+------------+------+|tno|tname|tgender|tedu|tpro|+------+--------+---------+------------+------+|t004|马志超|男|博士研究生|教授|+------+--------+---------+------------+------+1rowinset(0.00sec)运行结果:2.执行带输入参数的存储过程执行带输入参数的存储过程,有两种方法:一种是使用变量名传递参数值;另一种是按给定表达式值传递参数值。用参数名传递参数值的方法执行存储过程p_jiaoshi2,分别查询学历为“本科”和“博士研究生”的记录。
DELIMITER//SET@输入学历='本科';CALLp_jiaoshi2(@输入学历);SET@输入学历='博士研究生';CALLp_jiaoshi2(@输入学历);//DELIMITER;实例6-4(2)按给定表达式值传递参数在执行存储过程的语句中,当存储过程含有多个输入参数时,采用这种方式传递值,给定参数值的顺序必须与存储过程中定义的输入变量的顺序一致。其语法格式如下:CALLprocedure_name(value1,value2,…)用按给定表达式值传递参数的方式执行存储过程p_jiaoshi2,分别查找学历为“本科”和“博士研究生”的记录。对应的SQL语句如下:运行结果和例6.4运行结果相同。CALLp_jiaoshi2('本科');CALLp_jiaoshi2('博士研究生');实例6-5如果需要从存储过程中返回一个或多个值,可以通过在创建存储过程的语句中定义输出参数来实现。定义输出参数,需要在CREATEPROCEDURE语句中定义参数时在参数名后面指定OUT关键字。语法格式如下:OUTparameter_namedatatype[=default]6.3.3创建和执行带输出参数的存储过程创建存储过程p_jiaoshi3,要求能根据用户给定的学历值,统计出“教师”表的所有教师中,学历为该值的教师人数,并将结果以输出变量的形式返回给调用者。DELIMITER//CREATEPROCEDUREp_jiaoshi3(INtedu1varchar(10),OUTteachernumsmallint)BEGINSELECTCOUNT(*)INTOteachernumFROMteacherWHEREtedu=tedu1;END//DELIMITER;实例6-6执行存储过程p_jiaoshi3,统计教师表中学历为“硕士研究生”的教师人数。运行结果:CALLp_jiaoshi3('硕士研究生',@abc);SELECT@abc;mysql>SELECT@abc;+------+|@abc|+------+|3|+------+1rowinset(0.00sec)实例6-7
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 47547-2026直埋保温管道安全运行光纤监测系统技术条件
- 三高人群膳食管理执行方案
- 慢病危险因素筛查方案
- 胃肠调理营养方案
- 假期后复工复产安全教育培训方案
- 葡萄避雨栽培技术操作指南
- 防洪防汛实战演练评估记录规范
- 广东深圳市2026年九年级下学期数学第一次质量检测试题附答案
- 大棚番茄标准化种植技术规范
- 个体防护装备选用标准管理
- 2026上海大歌剧院管理有限公司夏季工作人员招聘137人笔试备考试题及答案解析
- 湖北省新高考协作体2026年5月高三下学期壮行考试 历史试卷(含答案)
- 乐山市2025年四川乐山市人力资源和社会保障局选调事业单位工作人员笔试历年参考题库典型考点附带答案详解
- 浙江省Z20联盟2026届高三年级第三次学情诊断数学+答案
- 2026东莞松山湖管委会招聘工作人员24人笔试参考试题及答案详解
- 2025年湖南省长沙市初二地理生物会考真题试卷(+答案)
- 17《红军桥》课件 美术三年级下册 (赣美版2024)
- 雨课堂学堂在线学堂云《人工智能安全与伦理(北京航空航天)》单元测试考核答案
- 安全员C1证(专职安全员-机械类)考试题库及答案
- DB11T 527-2021 配电室安全管理规范
- 2024年广东省高考(历史)科目真题(试卷+答案解析版)
评论
0/150
提交评论