
第8讲 存储过程
第8讲 存储过程

鲁问题 要把某完成功能的$QL做成类似C语言 的函数,供需要时调用,如何做? 。什么是存储过程? 是一组被编译在一起的TSQL语句的集合, 它们被集合在一起以完成一个特定的任 攀 务。 。存储过程的分类 系统存储过程 扩展存储过程(提供从SQL Server到外部 程序的接口,以便进行各种维护活动) 用户自定义的存储过程
概 述 问题 要把某完成功能的SQL做成类似C语言 的函数,供需要时调用,如何做? 什么是存储过程? 是一组被编译在一起的T-SQL语句的集合, 它们被集合在一起以完成一个特定的任 务。 存储过程的分类 系统存储过程 扩展存储过程(提供从SQL Server到外部 程序的接口,以便进行各种维护活动) 用户自定义的存储过程

从以下几个方面考虑: 1. 模块化编程: 剑建一个存储过程存放在数据库中后,就可 以被其他程序反复使用。 存储过程的作用 2. 快速执行: 存储过程第一次被执行后,就驻留在内存中。 以后执行就省去了重新分析、优化、编 译的过程。 3. 减少网络通信量 有了存储过程后,在网络上只要一条语句就 能执行一个存储过程。 安全机制 通过隔离和加密的方法提高了数据库的安全 性,通过授权可以让用户只能执行存储 过程而不能直接访问数据库对象
存 储 过 程 的 作 用 从以下几个方面考虑: 1. 模块化编程: 创建一个存储过程存放在数据库中后,就可 以被其他程序反复使用。 2. 快速执行: 存储过程第一次被执行后,就驻留在内存中。 以后执行就省去了重新分析、优化、编 译的过程。 3. 减少网络通信量 有了存储过程后,在网络上只要一条语句就 能执行一个存储过程。 4. 安全机制 通过隔离和加密的方法提高了数据库的安全 性,通过授权可以让用户只能执行存储 过程而不能直接访问数据库对象

视图 存储过程 存储过程和视图的比较 语句 只能是SELECT 可以包含程序流、 语句 逻辑以及 SELECT语句 输入、 不能接受参数, 可以有输入输出 返回结果 只能返回结果集 参数,也可以有 返回值 典型应用 多个表格的连接 完成某个特定的 查询 较复杂的任务
存储过程和视图的比较 视图 存储过程 语句 只能是SELECT 语句 可以包含程序流、 逻辑以及 SELECT语句 输入、 返回结果 不能接受参数, 只能返回结果集 可以有输入输出 参数,也可以有 返回值 典型应用 多个表格的连接 查询 完成某个特定的 较复杂的任务

望 。创剑建格式: CREATE PROCEDURE proc name AS Sql statements 行简单的存 【问题】创建一个名为p Student的 存储过程,返回student:表中班级 编码为20000001的学生信息 。执行格式: EXEC proc name
创 建 、 执 行 简 单 的 存 储 过 程 创建格式: CREATE PROCEDURE proc_name AS Sql_statements 【问题】创建一个名为p_Student的 存储过程,返回student表中班级 编码为20000001的学生信息 执行格式: EXEC proc_name

1. 创建一个名为p StuByClass 的存储过程,返回“00电子 商务”班的所有学生的信息 练 2. 执行该存储过程,并使用企 业管理器查看该存储过程的 定义
练 习 1 1. 创建一个名为p_StuByClass 的存储过程,返回“00电子 商务”班的所有学生的信息 2. 执行该存储过程,并使用企 业管理器查看该存储过程的 定义

创建带 鲁剑建格式: CREATE PROCEDURE proc name @para name datatype [=default],... AS Sql statements 入参数的存储 【例】创建一个名为 p_StudentPara的存储过程,该 存储过程根据给定的班级编码显 示该班级所有学生的信息 e
创 建 带 输 入 参 数 的 存 储 过 程 创建格式: CREATE PROCEDURE proc_name @para_name datatype [=default], … AS Sql_statements 【例】创建一个名为 p_StudentPara的存储过程,该 存储过程根据给定的班级编码显 示该班级所有学生的信息

1. 创建一个名为p StuByPara的 存储过程,根据给定的班级 编码和学生学号,显示相应 学生的信息 练习2
练 习 2 1. 创建一个名为p_StuByPara的 存储过程,根据给定的班级 编码和学生学号,显示相应 学生的信息

执行格式: 执行带 EXEC proc name [@para name =value,.. 精 指定参数名的格式 入参数的存储 不指定参数名的格式 思考:当缺省参数执行存储过 程时,如何处理?
执 行 带 输 入 参 数 的 存 储 过 程 执行格式: EXEC proc_name [@para_name = ] value, … 指定参数名的格式 不指定参数名的格式 思考:当缺省参数执行存储过 程时,如何处理?

带输 。定义格式同上,同时指明 OUTPUT关键字 。创建、执行方法:P202-203 参数的存储过 【练习】创建存储过程P ClassNum, 要求能根据用户给定的班级代码, 统计该班的人数,并将人数通过输 出变量返回给用户。 如要查询班级代码为’20000002?的学 生人数,如何调用存储过程 o
带 输 出 参 数 的 存 储 过 程 定义格式同上,同时指明 OUTPUT关键字 创建、执行方法:P202-203 【练习】创建存储过程P_ClassNum, 要求能根据用户给定的班级代码, 统计该班的人数,并将人数通过输 出变量返回给用户。 如要查询班级代码为’20000002’的学 生人数,如何调用存储过程