数据库原理与应用 第 15 章 · 第八节
课程第 15 章第八节 看代码看状态改代码改特征删过程图形删除形参三种参数实参调有参过程图形调用 版式
第 15 章 存储过程与函数 · 第八节

查看、修改、删除与参数

本 节 知 识 点
  1. 61SHOW CREATE PROCEDURE
  2. 62SHOW PROCEDURE STATUS
  3. 63只能删了重建
  4. 64ALTER PROCEDURE 只改得动特征
  5. 65DROP PROCEDURE,建议加 IF EXISTS
  6. 66菜单点删除会先给你看 SQL
  7. 67写在括号里的那几个名字
  8. 68IN、OUT、INOUT
  9. 69调用时真正传过去的东西
  10. 70常量给 IN,@ 变量给 OUT
  11. 71对话框里一个格子填一个实参
61
第 15 章 · 第八节

SHOW CREATE PROCEDURE

过程存进库里之后,当初那段代码原样留着。

第 61 页课件

重 点

第三列就是完整的建表语句,接手别人的库时先敲这一条。

上机做

上机四第 7 题 看一眼过程的代码

想一想

为什么数据库要把源代码也存下来?

62
第 15 章 · 第八节

SHOW PROCEDURE STATUS

十一列,看的是名字、库、定义者、建的时间。

第 62 页课件

重 点

加 LIKE 能筛,pattern 里 % 和 _ 两个通配符照旧能用。

知道更多

这张表很宽,屏幕窄的时候按一下右上角的「上下」就整屏放得下。

63
第 15 章 · 第八节

只能删了重建

MySQL 没有改过程体的语句。

第 63 页课件

重 点

要换代码,就是 DROP 掉再 CREATE 一遍,没有第三条路。

打个比方

文件柜里那份手册改了一句话,也得整本重印再放回去。

想一想

那实际工作里怎么管过程的版本?

64
第 15 章 · 第八节

ALTER PROCEDURE 只改得动特征

安全类型、注释、访问数据的方式。

第 64 页课件

分清楚两个 ALTER

改什么行不行
特征信息
过程体不行
参数表不行

重 点

特征信息的写法跟 CREATE 里那一串完全一样。

知道更多

改完再 SHOW PROCEDURE STATUS 一次,Security_type 那一列就变了。

上机做

上机四第 7 题 改一次特征试试

65
第 15 章 · 第八节

DROP PROCEDURE,建议加 IF EXISTS

删一个不存在的会报 1305。

第 65 页课件

重 点

写脚本的习惯:先 DROP IF EXISTS 再 CREATE,这样脚本能重复跑。

记牢它两个报错

  1. 重名报 1304
  2. 不存在报 1305

上机做

上机四第 2 题 两个报错各撞一次

66
第 15 章 · 第八节

菜单点删除会先给你看 SQL

Review SQL 那一步就是让你确认。

第 66 页课件

重 点

工具的每一次点击背后都是一句 SQL,看一眼再点,出不了事。

知道更多

删过程不影响表里的数据,它只是一段代码,跟数据是两回事。

想一想

删掉的存储过程能找回来吗?

67
第 15 章 · 第八节

写在括号里的那几个名字

它们负责接住外面传进来的数据。

第 67 页课件

关键术语

形式参数parameter
定义时写在括号里的变量名
实际参数argument
调用时真正传过去的值

重 点

形参在没被调用之前是没有值的,只有调用发生时才拿到实参的值。

68
第 15 章 · 第八节

IN、OUT、INOUT

区别就一句话:数据从哪儿流到哪儿。

第 68 页课件

试一试三种参数,箭头方向不一样

这个参数是
调用处 @n = 5 存储过程 形参 num 值传进去 值带出来

重 点

省略不写默认就是 IN。OUT 和 INOUT 的实参必须是 @ 变量。

知道更多

课件这一页把用户会话变量叫成「全局变量」,其实它是会话级的。

上机做

上机四第 4 题 OUT 传常量试试

69
第 15 章 · 第八节

调用时真正传过去的东西

个数、类型、传递方式都要跟形参对得上。

第 69 页课件

重 点

cal_students 那一题是标准形状:两个 IN 一个 OUT,考试大题常考。

上机做

上机四第 6 题 课件那一题原样敲

想一想

把三个实参的顺序写反了,会报错吗?

70
第 15 章 · 第八节

常量给 IN,@ 变量给 OUT

调完再 SELECT 一次那个变量,才看得到结果。

第 70 页课件

重 点

OUT 参数传常量当场报 1414,常量装不住带回来的值。

记牢它两步走

  1. CALL 名(实参, @n)
  2. SELECT @n 看结果

想一想

OUT 参数进去的时候是什么值?

71
第 15 章 · 第八节

对话框里一个格子填一个实参

最后那个格子填 @n,跟手敲一模一样。

第 71 页课件

重 点

对话框帮你把 CALL 语句拼好,OUT 那一格照样得填 @ 变量。

练一练

调用带 OUT 参数的存储过程时,该参数位置必须传入什么?
  1. A常量
  2. B表达式
  3. C用户会话变量(带 @)
  4. D字段名
答案 C

OUT 参数要把值带出来,常量存不了值,所以必须给一个变量的位置,报错号 1414。

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