数据库存储过程
执行存储过程
(2)执行带参数的存储过程 1)使用参数名传递参数值 执行使用参数名传递参数值的存储 过程的语法格式如下。 过程的语法格式如下。 [@参数名 参数名= EXECUTE 存储过程名 [@参数名=参数 值] [,...n]
执行存储过程
实例】执行【实例10 10【实例】执行【实例10-2】创建的 存储过程u_getstudent 存储过程u_getstudent
2. 创建存储过程
创建和使用存储过程都必须遵循如下的规则: 创建和使用存储过程都必须遵循如下的规则:
1)创建存储过程的权限默认为属于数据库所有者,该所 创建存储过程的权限默认为属于数据库所有者, 有者可以把次权限授予其他用户。 有者可以把次权限授予其他用户。 2)存储过程是数据库对象,其名称必须遵守标识符规则。 存储过程是数据库对象,其名称必须遵守标识符规则。 名称标识符的长度最大为128 128位 且数据库中必须惟一。 名称标识符的长度最大为128位,且数据库中必须惟一。 3)只能在当前数据库中创建存储过程。 只能在当前数据库中创建存储过程。 4)每个存储过程最多可以使用1024个参数。 每个存储过程最多可以使用1024个参数。 1024个参数 5)存储过程最大支持32层嵌套。 存储过程最大支持32层嵌套。 32层嵌套
执行存储过程
(2)执行带参数的存储过程
在执行存储过程的语句中, 在执行存储过程的语句中,有两种方式 来传递参数值,分别是使用参数名传递 参数名传递参数 来传递参数值,分别是使用参数名传递参数 值和按参数位置传递参数值。 值和按参数位置传递参数值。 按参数位置传递参数值 使用参数名传递参数值,是通过语句“ 使用参数名传递参数值,是通过语句“@ 参数名=参数值”给参数传递值。 参数名=参数值”给参数传递值。当存储过程 含有多个输入参数时, 含有多个输入参数时,参数值可以按任意顺 序制定, 序制定,对于允许空值和具有默认值的输入 参数可以不给出参数的传递值。 参数可以不给出参数的传递值。
2. 创建存储过程
实例】针对教师表Teacher Teacher, 【实例】针对教师表Teacher,创建一个名为 teacher_pro1的存储过程 的存储过程, teacher_pro1的存储过程,用于查询所有男教师的 信息。 信息。 USE 学生成绩管理系统 GO create procedure teacher_pro as select * from 教师表 性别=' ='男 where 性别='男' go
(1)创建不带参数的存储过程
执行存储过程的基本语法如下: 执行存储过程的基本语法如下:
EXEC[UTE] 存储过程名
如果该存储过程是批处理中第一条语句, EXEC可以省 如果该存储过程是批处理中第一条语句,则EXEC可以省 略。 简单存储过程类似于将一组SQL语句起个名字, 简单存储过程类似于将一组SQL语句起个名字,然后就 SQL语句起个名字 可以在需要时反复调用。复杂一些的则要有输入和输出参数。 可以在需要时反复调用。复杂一些的则要有输入和输出参数。
2. 创建存储过程
10从学生表中返回指定学号的学生的信息。 【例10-2】从学生表中返回指定学号的学生的信息。 create procedure u_getstudent @number varchar(40) as select* from 学生表 学号=@number where 学号=@number
1. 存储过程的概念
(3)存储过程的类型
2)用户自定义的存储过程
用户定义的存储过程可分为本地存储过程 用户定义的存储过程可分为本地存储过程 Procedures)、 )、远程存储过程 (Local Stored Procedures)、远程存储过程 Procedures)、 (Remote Stored Procedures)、临时存储过程 Procedures)、 (Temporary Stored Procedures)、扩展存储过程 Procedures)等 (Extended Stored Procedures)等。在这里我们 只讨论本地存储过程。 只讨论本地存储过程。
2. 创建存储过程
(1)创建不带参数的存储过程
创建存储过程的基本语法如下: 创建存储过程的基本语法如下: CREATE PROCEDURE 存储过程名 [WITH ENCRYPTION]—对存储过程加密 [WITH RECOMPILE]—对存储过程重新编译 AS SQL语句 SQL语句
2. 创建存储过程
10 存 储 过 程
通过本节的学习,应该掌握以下内容: 通过本节的学习,应该掌握以下内容: 存储过程的作用; 存储过程的作用; 熟练创建、修改、删除存储过程; 熟练创建、修改、删除存储过程; 在实际应用开发时能够灵活运用存储过程 以提高开发效率。 以提高开发效率。
10 存 储 过 程
1. 存储过程的概念 2. 创建存储过程 3. 执行存储过程 4. 存储过程的管理与维护
2. 创建存储过程
【实例】在学生成绩管理数据库中,创建一个名为 实例】在学生成绩管理数据库中, grade_pro”的存储过程 的存储过程, “grade_pro 的存储过程,用于查询不及格学生的成绩信息 包括学号,姓名,课程名称,成绩)。 (包括学号,姓名,课程名称,成绩)。 USE 学生成绩管理系统 GO create procedure grade_pro as 学生表.学号,姓名,课程名, select 学生表.学号,姓名,课程名,分数 学生表,课程表, from 学生表,课程表,成绩表 学生表.学号=成绩表.学号and 课程表.课程号= where 学生表.学号=成绩表.学号and 课程表.课程号=成绩 课程号and 分数<60 表.课程号and 分数<60 go
1. 存储过程的概念
(3)存储过程的类型
2)用户自定义的存储过程 由用户在当前工作的数据库中创建的存 储过程,称作本地存储过程。 储过程,称作本地存储过程。事实上一般所 说的存储过程指的就是本地存储过程。 说的存储过程指的就是本地存储过程。
2. 创建存储过程
创建用户自定义存储过程有两 种 方 法 : 可 以 使 用 T-SQL 语 言 的 PROCEDURE语句创建存储过 CREATE PROCEDURE语句创建存储过 也可以使用对象资源管理器 对象资源管理器向 程,也可以使用对象资源管理器向 导创建存储过程。 导创建存储过程。
1. 存储过程的概念
(3)存储过程的类型
1)系统存储过程 系统存储过程我们以前接触过: 系统存储过程我们以前接触过: 查看表的结构。 Execute sp_help 表名 :查看表的结构。 Execute sp_helpindex 表名 :查看表上的索 引信息。 引信息。 视图名: Execute sp_helptext 视图名:查看视图的定 义信息。 义信息。 Server提供了很多系统存储过程 提供了很多系统存储过程, SQL Server提供了很多系统存储过程,他们用 于系统管理、用户登录管理、权限设置、 于系统管理、用户登录管理、权限设置、数据库对 象管理、数据复制等操作。 象管理、数据复制等操作。
1. 存储过程的概念
Server应用操作中 应用操作中, SQL Server应用操作中,存储过程和触 发器扮演相当重要的角色, 发器扮演相当重要的角色,不仅能提高应用 效率,确保一致性,更能提高系统执行速度。 效率,确保一致性,更能提高系统执行速度。 同时,使用触发器来完成业务规则, 同时,使用触发器来完成业务规则,达到 简化程序设计的目的。 简化程序设计的目的。
允许模块化的程序设计。 1)允许模块化的程序设计。 2)更快的执行速度。 更快的执行速度。 有效降低网络流量。 3)有效降低网络流量。 较好地安全机制。 (3)存储过程的类型
1)系统存储过程 系统存储过程(System Stored 系统存储过程( Procedures)主要存储在master数据库中, Procedures)主要存储在master数据库中, master数据库中 sp_开头,用来进行系统的各项设定, 开头 以sp_开头,用来进行系统的各项设定,获 取信息,从而为系统管理员管理SQL Server 取信息,从而为系统管理员管理SQL 提供支持。 提供支持。
1. 存储过程的概念
(1)基本概念
存储过程是一组编译在单个执行计划中的 Transact-SQL语句,它将一些固定的操作集中起来 Transact-SQL语句,它将一些固定的操作集中起来 语句 固定的操作 交给SQL Server数据库服务器完成,以实现某个任 交给SQL Server数据库服务器完成, 数据库服务器完成 务。 存储过程就是预先编译和优化并存储于数据库 中的过程。 中的过程。
Execute sp_helptext 义信息 。
1. 存储过程的概念
存储过程按返回的数据类型, 存储过程按返回的数据类型,可分为两 一类类似于SELECT语句,用于查询数据, SELECT语句 类:一类类似于SELECT语句,用于查询数据, 查询到的数据以结果集的形式给出; 查询到的数据以结果集的形式给出;另一类 存储过程是通过输出参数返回信息, 存储过程是通过输出参数返回信息,或不返 回信息只执行一个动作。存储过程可以嵌套, 回信息只执行一个动作。存储过程可以嵌套, 即一个存储过程的内部可以调用另一个存储 过程。 过程。
1. 存储过程的概念
存储过程包括系统存储过程和用户存储过程。 存储过程包括系统存储过程和用户存储过程。 系统存储过程: 系统存储过程: Execute Execute 引信息。 引信息。 sp_help 表名 :查看表的结构。 查看表的结构。 表名 :查看表上的索 视图名: 视图名:查看视图的定 sp_helpindex
execute u_getstudent @number= '1002'
执行存储过程
(2)执行带参数的存储过程 2)按位置传送参数值