网站大量收购独家精品文档,联系QQ:2885784924

《MySQL数据库应用与管理项目化教程》课件_项目7-3 存储过程.pptx

《MySQL数据库应用与管理项目化教程》课件_项目7-3 存储过程.pptx

  1. 1、本文档共25页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

项目七-3存储过程和函数

任务目标

任务一创建存储过程和函数

任务二查看存储过程和函数

任务三 编程语法与流程控制

任务四 修改存储过程和函数

任务六删除存储过程和函数

创建存储过程和函数

主要内容:

创建存储过程

创建存储函数

重点难点:

设计和应用;

存储过程和函数应用

引入:

db_shop系统中要完成一个购买商品的订单的处理,一般需要考虑以下几步:

(1)在生成订单之前,首先需要查看商品库存中是否有相应商品;

(2)如果商品库存中不存在相应商品,需要向供应商订货;

(3)如果商品库存中存在相应商品,需要预定商品,并修改库存数量。

针对表的一个完整事务操作往往不是单条SQL语句就能实现的,而是需要一组SQL语句来实现。

可将一个完整事务操作中所包含的多条SQL语句创建为存储过程或函数,以方便应用。

存储过程和函数作用

存储过程和函数

可以简单地理解为一组经过编译并保存在数据库中的SQL语句的集合,可以随时被调用。

作用

模块化使用。将复杂的工作程序写成存储过程和函数,以后可通过带入不同的参数或不带参重复调用,大大方便了用户的使用。

执行效率高。存储过程和函数,执行多次时速度快。

降低网络流量。存储过程是存在服务器端、并在服务器端执行,调用执行时用一个EXECUTE指令来代替存储过程内所包含的大量SQL语句的传输,大大降低了网络流量。

安全性。当数据表需要必威体育官网网址时,可以利用存储过程来作为数据存取的管道,来控制用户对数据库信息访问的权限。

存储过程创建

查阅语法:

官网文档:/doc/refman/8.0/en/create-procedure.html

CREATE

[DEFINER=user]

PROCEDUREsp_name([proc_parameter[,...]])

[characteristic...]routine_body

characteristic:

COMMENTstring

|LANGUAGESQL

|[NOT]DETERMINISTIC

|{CONTAINSSQL|NOSQL|READSSQLDATA|MODIFIESSQLDATA}

|SQLSECURITY{DEFINER|INVOKER}

routine_body:

ValidSQLroutinestatement

存储过程创建

创建基本语法:

CREATEPROCEDUREproc_name([IN|OUT|INOUT]param_nametype[,…])

BEGIN

语句体(包括变量声明、控制语句、SQL语句)

END

说明:

IN|OUT|INOUT表示:输入参数、输出参数、输入输出参数。

语句体以BEGIN......END括住,每一个语句都要用分号“;”结尾。

由于存储过程内部语句要以分号结束,需要在定义存储过程前,用delimiter关键字定义其他字符作为结束标志。

存储过程调用

调用基本语法:

CALLsp_name([parameter[,...]])

CALLsp_name[()]

存储过程应用

使用不带参数的存储过程

mysqldelimiter$$--改变MySQLdelimiter为:“//”改变命令提交执行的标志符号,默认情况下,delimiter是分号;

mysqlCREATEPROCEDUREp_search()

BEGIN

SELECT*FROMgoods;

END$$

mysqldelimiter;--改回默认的MySQLdelimiter:“;”

mysqlCALLp_Search();

存储过程应用

使用带输入(IN)参数的存储过程

mysqldelimiter//--改变MySQLdelimiter为:“//”

mysqlCREATEPROCEDUREp_staferSearch(INsidCHAR(5))

BEGIN

SELECT*FROMstafferWHEREstaff_id=sid;

END//

mysqldelimiter;--改回默认的MySQLdelimiter:“;”

mysqlCALLp_staferSearch(10503);

存储过程应用

使用带输入(IN)参数和输出(OUT)参数的存储过程

mysqlDELIMITER//--改变MySQLdelimiter为:“//”

mysqlCREATEPROCEDUREp_c

文档评论(0)

酱酱 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档