数据库原理与应用 第 15 章 · 第一节
课程第 15 章第一节 开篇本章地图第一节存储过程存储函数五大优点过程比函数 版式
第 15 章 存储过程与函数 · 第一节

存储过程与函数是什么

本 节 知 识 点
  1. 01把一段代码存进数据库
  2. 02六节课讲两件东西
  3. 03先把两个名词分清楚
  4. 04一组 SQL,预先编译,存在库里
  5. 05同样存在库里,但必须交出一个值
  6. 06为什么值得把代码存进数据库
  7. 07五处不一样,考试考的就是这五处
01
第 15 章 · 第一节

把一段代码存进数据库

从这一章起,写给数据库的不再是一句,是一段。

第 1 页课件

重 点

前十四章每敲一句执行一句,这一章第一次把一整段代码交出去。

打个比方

一句话说完就走,和把一套流程写成手册放在柜子里,随时照着做。

02
第 15 章 · 第一节

六节课讲两件东西

存储过程和存储函数,中间三节是写它们要用的零件。

第 2 页课件

记牢它六节的顺序

  1. 先讲是什么
  2. 再备零件
  3. 过程和函数
  4. 最后游标

知道更多

第二、三节是零件铺,变量、运算符、流程控制、内置函数都在那儿。

想一想

为什么零件要先讲,过程反而放后面?

03
第 15 章 · 第一节

先把两个名词分清楚

一个叫存储过程,一个叫存储函数,差别不小。

第 3 页课件

重 点

两个都是存在数据库里的一段 SQL,区别在怎么调、有没有返回值。

想一想

编程语言里的函数,跟这两个哪个更像?

04
第 15 章 · 第一节

一组 SQL,预先编译,存在库里

写一次,存进去,往后一句 CALL 就跑。

第 4 页课件

关键术语

存储过程Stored Procedure
一组完成特定功能的 SQL 代码段
调用call
用 CALL 语句让它跑起来

试一试重敲二十遍,还是存一次调二十遍

老师第几次查
做法网上发过去的服务器解析编译

重 点

「预先编译」是关键:解析和优化只做一次,往后每次调用都省下这一步。

05
第 15 章 · 第一节

同样存在库里,但必须交出一个值

它多一条硬规矩:函数体里必须有 RETURN。

第 5 页课件

重 点

存储函数由一组 SQL 加一些控制结构组成,执行完 RETURN 一个值出来。

分清楚一字之差

交出什么
存储过程不一定有值
存储函数必须一个值

想一想

「必须有返回值」这一条会带来什么限制?

06
第 15 章 · 第一节

为什么值得把代码存进数据库

复用、快、省网络、更安全,还能写分支和循环。

第 6 页课件

记牢它五个好处

  1. 写一次到处用
  2. 预编译跑得快
  3. 网上少发字
  4. 权限好收口

重 点

第五个好处最要紧:有了流程控制,SQL 才从查询语言变成能编程的语言。

知道更多

真实项目里复杂的统计、报表、批量处理,常常就是一个存储过程。

想一想

把业务逻辑放进数据库,有什么代价?

07
第 15 章 · 第一节

五处不一样,考试考的就是这五处

参数、调用、返回值、能不能吐表、干什么用。

第 7 页课件

试一试五行点一遍

点一行,看这一处到底差在哪
比什么存储过程存储函数

重 点

一句话记住:过程做事,函数算值。函数能嵌进 SELECT,过程只能 CALL。

练一练

下列关于存储过程和存储函数的说法,正确的是?
  1. A存储过程必须有 RETURN 语句
  2. B函数支持 IN、OUT、INOUT 三种参数
  3. C函数可以嵌入 SELECT 中,存储过程不行
  4. D过程用 SELECT 调,函数用 CALL 调
答案 C

过程不能有 RETURN,函数只有 IN 一种参数,调用方式也正好反了。

保山学院·人工智能教研室·曹鼎鼎