第九章存储过程与触发器 包含用户的操作界面 例如:登陆界面、商 入库界面、卖出商品界 面等 前台 系统 后台数据库
系 统 第九章 存储过程与触发器 ❖ 前 台 后台数据库 包含用户的操作界面。 例如:登陆界面、商品 入库界面、卖出商品界 面等
第九章存储过程与触发器 商品查询界面 前 台根据关键词写出et.语句 后台数据库执行 select…命令,并将结果返回
第九章 存储过程与触发器 ❖ 前 台 后台数据库 执行select …命令,并将结果返回 商品查询界面 根据关键词写出select …语句
第九章存储过程与触发器 商品查询界面 前 台根据关键词写出调用语句 后台数据库自动执行已编写好的命令,将结果返回
第九章 存储过程与触发器 ❖ 前 台 后台数据库 自动执行已编写好的命令,将结果返回 商品查询界面 根据关键词写出调用语句
第九章存储过程与触发器 存储过程综述 存储过程的基本操作 创建和执行带有参数的存储过程 存储过程重新编译 系统存储过程和扩展存储过程
第九章 存储过程与触发器 ❖ 存储过程综述 ❖ 存储过程的基本操作 ❖ 创建和执行带有参数的存储过程 ❖ 存储过程重新编译 ❖ 系统存储过程和扩展存储过程
第九章存储过程与触发器 存储过程综述 1、存储过程概念 存储过程是一种数据库对象,是为了实现某个特定任务,将一组 预编译的SQL语句以一个存储单元的形式存储在服务器上,供用户调 用。存储过程在第一次执行时进行编译,然后将编译好的代码保存在 高速缓存中以便以后调用,这样可以提高代码的执行效率。 存储过程同其他编程语言中的过程相似,有如下特点: 1)接受输入参数并以输出参数的形式将多个值返回至调用过程或 批处理。 2)包含执行数据库操作(包括调用其它过程)的编程语句。 ★失 3)向调用过程或批处理返回状态值,以表明成功或失败(以 败原因)
第九章 存储过程与触发器 ❖ 存储过程综述 1、存储过程概念 存储过程是一种数据库对象,是为了实现某个特定任务,将一组 预编译的SQL语句以一个存储单元的形式存储在服务器上,供用户调 用。存储过程在第一次执行时进行编译,然后将编译好的代码保存在 高速缓存中以便以后调用,这样可以提高代码的执行效率。 存储过程同其他编程语言中的过程相似,有如下特点: 1)接受输入参数并以输出参数的形式将多个值返回至调用过程或 批处理。 2)包含执行数据库操作(包括调用其它过程)的编程语句。 3)向调用过程或批处理返回状态值,以表明成功或失败(以及失 败原因)
第九章存储过程与触发器 ☆存储过程综述 优点: l、安全机制:只给用户访问存储过程的权限,而不授予用户访问表 和视图的权限。 2、改良了执行性能:在第一次执行后,会在 SQLServer的缓冲区中 创建查询树,以后执行无需编译。 3、减少网络流量:存储过程存在于服务器上,调用时,只需传递执 行存储过程的执行命令和返回结果。 模块化的程序设计:增强了代码的可重用性,提高了开发效率
第九章 存储过程与触发器 ❖存储过程综述 优点: 1、安全机制:只给用户访问存储过程的权限,而不授予用户访问表 和视图的权限。 2、改良了执行性能:在第一次执行后,会在SQL server的缓冲区中 创建查询树,以后执行无需编译。 3、减少网络流量:存储过程存在于服务器上,调用时,只需传递执 行存储过程的执行命令和返回结果。 4、模块化的程序设计:增强了代码的可重用性,提高了开发效率
第九章存储过程与触发器 存储过程综述 、存储过程类型 系统存储过程:系统存储过程存储在 master数据库中,并以sp为前缀,主 要用来从系统表中获取信息,为系统管理员管理 SQLServer提供帮助,为用 户查看数据库对象提供方便。 本地存储过程:本地存储过程是用户根据需要,在自己的普通数据库中创 建的存储过程 临时存储过程:临时存储过程通常分为局部临时存储过程和全局临时存储 过程。创建局部临时存储过程时,要以“#”作为过程名称的第一个字符。创 建全局临时存储过程时,要以“#”作为过程名称的前两个字符 远程存储过程:远程存储过程是 SQLServer2000的一个传统功能,是指非 本地服务器上的存储过程 扩展存储过程:扩展存储过程以xp为前缀,它是关系数据库引擎的放 式数据服务层的一部分,其可以使用户在动态链接库DL)文件所包含的函 数中实现逻辑,从而扩展了 Transact-SQLI的功能,并且可以象调用 Transact SQL过程那样从 Transact-SQL语句调用这些函数
第九章 存储过程与触发器 ❖ 存储过程综述 2、存储过程类型 系统存储过程:系统存储过程存储在master数据库中,并以sp_为前缀,主 要用来从系统表中获取信息,为系统管理员管理SQL Server提供帮助,为用 户查看数据库对象提供方便。 本地存储过程:本地存储过程是用户根据需要,在自己的普通数据库中创 建的存储过程。 临时存储过程:临时存储过程通常分为局部临时存储过程和全局临时存储 过程。创建局部临时存储过程时,要以“#”作为过程名称的第一个字符。创 建全局临时存储过程时,要以“##”作为过程名称的前两个字符。 远程存储过程:远程存储过程是SQL Server 2000的一个传统功能,是指非 本地服务器上的存储过程。 扩展存储过程:扩展存储过程以xp_为前缀,它是关系数据库引擎的开放 式数据服务层的一部分,其可以使用户在动态链接库(DLL)文件所包含的函 数中实现逻辑,从而扩展了Transact-SQL的功能,并且可以象调用TransactSQL过程那样从Transact-SQL语句调用这些函数
第九章存储过程与触发器 存储过程的基本操作-创建 创建存储过程时,需要注意下列事项: 只能在当前数据库中创建存储过程。 2、数据库的所有者可以创建存储过程,也可以授权其他用户创建存 储过程 3、存储过程是数据库对象,其名称必须遵守标识符命名规则。 4、不能将 CREATE PROCEDURE语句与其它SQL语句组合到单 个批处理中。 5、创建存储过程时,应指定所有输入参数和向调用过程或批处理返 回的输出参数、执行数据库操作的编程语句和返回至调用过程或批处 理以表明成功或失败的状态值
第九章 存储过程与触发器 ❖ 存储过程的基本操作---创建 创建存储过程时,需要注意下列事项: 1、只能在当前数据库中创建存储过程。 2、数据库的所有者可以创建存储过程,也可以授权其他用户创建存 储过程。 3、存储过程是数据库对象,其名称必须遵守标识符命名规则。 4、不能将CREATE PROCEDURE 语句与其它SQL 语句组合到单 个批处理中。 5、创建存储过程时,应指定所有输入参数和向调用过程或批处理返 回的输出参数、执行数据库操作的编程语句和返回至调用过程或批处 理以表明成功或失败的状态值
第九章存储过程与触发器 存储过程的基本操作-创建 使用SQL语句创建不带参数的存储过程语法格式如下: CREATE PROCT EDURE Procedure name IWITH f RECOMPILE I ENCRYPTION } As sql statement[….nl procedure name:新存储过程的名称。过程名必须符合标识符规则,且对于 数据库及其所有者必须唯一。 RECOMPILE:SQL不会缓存该过程的计划,该过程将在运行时重新编译。 ENCRYPTION: SQL Server加密使用 ENCRYPTION可防止将过程作为 SQL Server复制的一部分发布
第九章 存储过程与触发器 ❖存储过程的基本操作---创建 使用SQL语句创建不带参数的存储过程语法格式如下: CREATE PROC [ EDURE ] procedure_name [ WITH { RECOMPILE | ENCRYPTION } ] AS sql_statement [ ...n ] procedure_name:新存储过程的名称。过程名必须符合标识符规则,且对于 数据库及其所有者必须唯一。 RECOMPILE : SQL 不会缓存该过程的计划,该过程将在运行时重新编译。 ENCRYPTION :SQL Server 加密 使用 ENCRYPTION 可防止将过程作为 SQL Server 复制的一部分发布
第九章存储过程与触发器 存储过程的基本操作-创建 例、在 STUDENT数据库中,创建一个查询存储过程 ST PROC BJ, 该存储过程将返回计算机系的班级名称。其程序清单如下: USE STUDENT GO CREATE PROC DBOST PROC BJ AS SELECT班级名称 FROM班级,系部 WHERE系部系部代码=班级系部代码and系部系部名称 '计算机系 GO
第九章 存储过程与触发器 ❖ 存储过程的基本操作---创建 例、在STUDENT数据库中,创建一个查询存储过程ST_PROC_BJ, 该存储过程将返回计算机系的班级名称。其程序清单如下: USE STUDENT GO CREATE PROC DBO.ST_PROC_BJ AS SELECT 班级名称 FROM 班级,系部 WHERE 系部.系部代码= 班级.系部代码and 系部.系部名称= '计算机系' GO