销售管理数据库中存储过程的运用
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
销售管理数据库中存储过程的运用
为什么要建立存储过程?
实现相同功能的SQL语句集
客户机
实现相同功能的SQL语句集
客户机
数据库服务器
缺点:1. 相同的SQL语句要重复书写 2. 传输网络面临较大压力 3. 执行效率低 4. 存在安全隐患
销售管理数据库中存储过程的运用
为什么要建立存储过程?
调用存储过程实现特定功能
带输入参数的存储过程 (续)
u 【例9.9】按位置传递执行存储过程listEmployee,查找 工资超过4000元的的男员工和工资超过3000元女员工的详 细信息。
代码如下: EXEC listEmployee '男', 4000 EXEC listEmployee '女', 3500
销售管理数据库中存储过程的运用
u sp_helptext:是用户定义规则的定义、默认值、未加密的 Transact-SQL 存储过程、用户定义 Transact-SQL 函数、触发器、计算列、CHECK 约束、 视图或系统对象(如系统存储过程)。
u sp_who:提供有关 Microsoft SQL Server Database Engine 实例中的当 前用户和进程的信息。
u sp_helptext用于显示存储过程的源代码,语法格式如下:
sp_helptext [[@objname=]存储过程]
销售管理数据库中存储过程的运用
查看存储过程
u 【例9.14】查看customer_order存储过程的参数和数据类 型。
代码如下: USE CompanySales GO sp_help customer_order
销售管理数据库中存储过程的运用
带输入参数的存储过程
u 【例9.6】创建名为listEmployee的存储过程,其功能为: 在员工表employee中查找符合性别和超过指定工资条件的 员工详细信息。
CREATE PROCEDURE listEmployee @sex varchar(2), @salary money AS SELECT * FROM employee WHERE sex=@sex and salary>@salary
DROP {PROC | PROCEDURE } 存储过程名 [ ,...n ]
销售管理数据库中存储过程的运用
删除用户存储过程
u 【例9.16】删除PRO_SUM存储过程。
代码如下: USE CompanySales GO DROP PROCEDURE PRO_SUM
销售管理数据库中存储过程的运用
销售管理数据库中存储过程的运用
存储过程的概念
u 存储过程(Stored Procedure)是一组完成特定功能的 Transact-SQL语句集,经编译后存储在数据库中,用户调 用过程名和给出参数来调用它们.
u 特点:
u 完成特定功能 u 多条语句组成的程序 u 存放在数据库中(服务器) u 由客户机调用 u 可以带参数,也可以不带参数 u 可以有返回值,也可以没有
resource中,逻辑上存在在 每个数据库的SYS框架中
销售管理数据库中存储过程的运用
存储过程的分类(续)
u 用户自定义存储过程
用户自定义存储过程是指封装的由用户创建、能完成特定 功能的、可重用代码的模块或例程。
u 扩展存储过程
扩展存储过程是指使用编程语言(例如 C)创建自己的外 部例程,是指 Microsoft SQL Server 的实例可以动态加载和 运行的 DLL。
销售管理数据库中存储过程的运用
查看存储过程
u 【例9.15】查看customer_order存储过程的源代码。
代码如下: USE CompanySales GO sp_helptext customer_order
销售管理数据库中存储过程的运用
删除用户存储过程
u 删除用户存储过程可以使用DROP命令,语法格式如下:
销售管理数据库中存储过程的运用
不带参数的存储过程(续)
u 执行不带参数的存储过程
语法结构如下: EXEC 存储过程名 【例9.3】执行创建的Cu_Information存储过程。
EXEC Cu_Information
销售管理数据库中存储过程的运用
创建存储过程的步骤
u 实现过程体的功能
u 构建实现特定功能的SQL语句
代码如下: DECLARE @ANSWER INT EXEC PRO_SUM 20,69, @ANSWER OUTPUT select @ANSWER '结果'
销售管理数据库中存储过程的运用
查看存储过程
u sp_help用于显示存储过程的参数及其数据类型,语法格 式如下:
sp_help [[@objname=] 存储过程名 ]
u 存储过程由有数据库专长的技术人员编写。可以无限次调用 u 存储过程独立与程序源代码,维护方便
u 执行速度快
u 存储过程经过编译 u 存储过程经过优化 u 批处理的SQL语句每次均需要编译和优化
u 有效降低网络流量
u 只需通过网络发送一条调用存储过程的语句,不需要传递大量 的SQL语句代码
u 提高数据库的安全性
销售管理数据库中存储过程的运用
带输入参数的存储过程 (续)
u 执行输入参数的存储过程两种方法:
u 使用参数名传递参数值 EXEC 存储过程名 [@参数名=参数值 ][DEFAULT] [,…n]
u 按位置传递参数值
EXEC 存储过程名 [参数值1,参数值2,…]
销售管理数据库中存储过程的运用
带输入参数的存储过程 (续)
u 【例9.8】利用存储过程listEmployee,查找工资超过 4000元的的男员工和工资超过3000元女员工的详细信息。
代码如下: EXEC listEmployee @sex='男',@salary=4000 EXEC listEmployee @salary=3500,@sex='女'
销售管理数据库中存储过程的运用
销售管理数据库中存储过程的运用
存储过程的组成
存储过程的定义中包含如下的两个主要组成部分。 (1)过程名称及其参数的说明:包括所有的输入参数以及传给调用者 的输出参数。 (2)过程的主体:也称为过程体,针对数据库的操作语句 (Transact-SQL 语句),包括调用其它存储过程的语句。
销售管理数据库中存储过程的运用
u 创建存储过程
CREATE PROCEDURE AS SQL语句集
u 验证准确性 EXEC <存储过程名>
销售管理数据库中存储过程的运用
带输入参数的存储过程
u 创建带输入参数的存储过程
CREATE [ PROC | PROCEDURE] 存储过程名 [ { @参数名称 参数数据类型 } [ = 参数的默认值 ] [ ,...n ] [ WITH ENCRYPTION]
销售管理数据库中存储过程的运用
系统存储过程
常用系统存储过程: u sp_tables:返回可在当前环境中查询的对象列表。这代表可
在 FROM 子句中出现的任何对象。 u sp_stored_procedures:返回当前环境中的存储过程列表。 u sp_rename:在当前数据库中更改用户创建对象的名称。此对
u 存储过程具有安全性和所有权连接 u 存储过程可以附加安全证书
销售管理数据库中存储过程的运用
u 系统存储过程 u 用户自定义存储过程 u 扩展存储过程
存储过程的分类
销售管理数据库中存储过程的运用
存储过程的分类 (续)
u 系统存储过程
u 完成SQL Server2005的许 多过来活动
u 以sp_开头 u 物理上存储在数据库的
销售管理数据库中存储过程的运用
存储过程语法格式
语法格式: CREATE [ PROC | PROCEDURE] 存储过程名 [ { @参数名称 参数数据类型 } [ = 参数的默认值 ] [ OUTPUT ] ] [ ,...n ] [ WITH ENCRYPTION] [WITH RECOMPILE ] AS sql_statement
销售管理数据库中存储 过程的运用
2020/12/21
销售管理数据库中存储过程的运用
技能目标
u 理解存储过程概念以及存储过程的作用; u 学会创建、删除、存储过程。
销售管理数据库中存储过程的运用
知识目标
u 理解存储过程的作用; u 了解系统存储过程和扩展存储过程; u 掌握存储过程的基本类型; u 掌握创建、删除、修改和加密存储过程; u 掌握执行各类存储过程
象可以是表、索引、列、别名数据类型。 u sp_renamedb:更改数据库的名称。
销售管理数据库中存储过程的运用
系统存储过程
u sp_help:报告有关数据库对象(sys.sysobjects 兼容视图中列出的所有 对象)、用户定义数据类型或 SQL Server 2005 提供的数据类型的信息。
修改存储过程
u ALTER PROCEDURE语句的语法格式如下:
ALTER [ PROC | PROCEDURE] 存储过程名 [ { @参数名称 参数数据类型 } [ = 参数的默认值 ] [ OUTPUT ] ] [ ,...n ] [ WITH ENCRYPTION]
[WITH RECOMPILE ] AS sql_statement
[WITH RECOMPILE ] AS sql_statement
销售管理数据库中存储过程的运用
带输入参数的存储过程
u 【例9.4】创建一个存储过程,实现根据订单号获取该订 单的信息的功能。
CREATE PROCEDURE OrderDetail @OrderID INT AS SELECT * FROM Sell_Order WHERE SellOrderId=@OrderID
代码如下: CREATE PROCEDURE PRO_SUM @N1 INT,@N2 INT, @RESULT INT OUTPUT AS SET @RESULT = @N1 + @N2
销售管理数据库中存储过程的运用
带输出参数的存储过程
u 【例9.13】执行【例9.11】创建的PRO_SUM存储过程。
u 【例9.7】使用【例9.5】中创建的存储过程 customer_order,获取 “三川实业有限公司”的信息, 包括联系人姓名、联系方式以及该公司订购产品的明细表。
代码如下: EXEC customer_order @customername='三川实业有限公司'
销售管理数据库中存储过程的运用
带输入参数的存储过程 (续)
参数: u @参数名称:存储过程可以没有参数。也可以声明一个或多个参数,参数名称
必须@作为第一个字符。参数后面带OUTPUT,表示为输出参数。 u WITH ENCRYPTION:对存储过程加密,其他用户无法查看存储过程的定义。 u WITH RECOMPILE:每次执行该存储过程都重新进行编译。 u sql_statemen:该存储过程中定义的编程语句。
客户机
调用存储过程实现特定功能
客户机
数据库服务器 存储过程
优点:1. 直接调用特定存储过程实现某种功能,不需要用户自己书写SQL语句 2. 存储过程存放在服务器上,不需网络传输 3. 存储过程经过编译和优化,执行效率高 4. 安全性高
销售管理数据库中存储过程的运用
存储过程的优点
u 允许模块化程序设计
带输入参数的存储过程 (续)
u 【例9.11】利用Name_Employee存储过程查询所有员工信 息和姓王的员工信息
u EXEC Name_Employee
查询所有员工信息
u EXEC Name_Employee ‘王%’
查询姓王的员工信息
销售管理数据库中存储过程的运用
带输出参数的存储过程
u 【例9.12】 创建带返回参数的存储过程求两个整数的和。
不带参数的存储过程
u 创建不带参数的存储过程 语法格式:
CREATE [ PROC | PROCEDURE] 存储过程名 [ WITH ENCRYPTION] [WITH RECOMPILE ]
AS sql_statement
销售管理数据库中存储过程的运用
不带参数的存储过程
u 【例9.1】创建一个名为Cu_information的存储过程,用 于查询客户的信息。 use student CREATE PROCEDURE Cu_information AS SELECT * FROM Customer
为什么要建立存储过程?
实现相同功能的SQL语句集
客户机
实现相同功能的SQL语句集
客户机
数据库服务器
缺点:1. 相同的SQL语句要重复书写 2. 传输网络面临较大压力 3. 执行效率低 4. 存在安全隐患
销售管理数据库中存储过程的运用
为什么要建立存储过程?
调用存储过程实现特定功能
带输入参数的存储过程 (续)
u 【例9.9】按位置传递执行存储过程listEmployee,查找 工资超过4000元的的男员工和工资超过3000元女员工的详 细信息。
代码如下: EXEC listEmployee '男', 4000 EXEC listEmployee '女', 3500
销售管理数据库中存储过程的运用
u sp_helptext:是用户定义规则的定义、默认值、未加密的 Transact-SQL 存储过程、用户定义 Transact-SQL 函数、触发器、计算列、CHECK 约束、 视图或系统对象(如系统存储过程)。
u sp_who:提供有关 Microsoft SQL Server Database Engine 实例中的当 前用户和进程的信息。
u sp_helptext用于显示存储过程的源代码,语法格式如下:
sp_helptext [[@objname=]存储过程]
销售管理数据库中存储过程的运用
查看存储过程
u 【例9.14】查看customer_order存储过程的参数和数据类 型。
代码如下: USE CompanySales GO sp_help customer_order
销售管理数据库中存储过程的运用
带输入参数的存储过程
u 【例9.6】创建名为listEmployee的存储过程,其功能为: 在员工表employee中查找符合性别和超过指定工资条件的 员工详细信息。
CREATE PROCEDURE listEmployee @sex varchar(2), @salary money AS SELECT * FROM employee WHERE sex=@sex and salary>@salary
DROP {PROC | PROCEDURE } 存储过程名 [ ,...n ]
销售管理数据库中存储过程的运用
删除用户存储过程
u 【例9.16】删除PRO_SUM存储过程。
代码如下: USE CompanySales GO DROP PROCEDURE PRO_SUM
销售管理数据库中存储过程的运用
销售管理数据库中存储过程的运用
存储过程的概念
u 存储过程(Stored Procedure)是一组完成特定功能的 Transact-SQL语句集,经编译后存储在数据库中,用户调 用过程名和给出参数来调用它们.
u 特点:
u 完成特定功能 u 多条语句组成的程序 u 存放在数据库中(服务器) u 由客户机调用 u 可以带参数,也可以不带参数 u 可以有返回值,也可以没有
resource中,逻辑上存在在 每个数据库的SYS框架中
销售管理数据库中存储过程的运用
存储过程的分类(续)
u 用户自定义存储过程
用户自定义存储过程是指封装的由用户创建、能完成特定 功能的、可重用代码的模块或例程。
u 扩展存储过程
扩展存储过程是指使用编程语言(例如 C)创建自己的外 部例程,是指 Microsoft SQL Server 的实例可以动态加载和 运行的 DLL。
销售管理数据库中存储过程的运用
查看存储过程
u 【例9.15】查看customer_order存储过程的源代码。
代码如下: USE CompanySales GO sp_helptext customer_order
销售管理数据库中存储过程的运用
删除用户存储过程
u 删除用户存储过程可以使用DROP命令,语法格式如下:
销售管理数据库中存储过程的运用
不带参数的存储过程(续)
u 执行不带参数的存储过程
语法结构如下: EXEC 存储过程名 【例9.3】执行创建的Cu_Information存储过程。
EXEC Cu_Information
销售管理数据库中存储过程的运用
创建存储过程的步骤
u 实现过程体的功能
u 构建实现特定功能的SQL语句
代码如下: DECLARE @ANSWER INT EXEC PRO_SUM 20,69, @ANSWER OUTPUT select @ANSWER '结果'
销售管理数据库中存储过程的运用
查看存储过程
u sp_help用于显示存储过程的参数及其数据类型,语法格 式如下:
sp_help [[@objname=] 存储过程名 ]
u 存储过程由有数据库专长的技术人员编写。可以无限次调用 u 存储过程独立与程序源代码,维护方便
u 执行速度快
u 存储过程经过编译 u 存储过程经过优化 u 批处理的SQL语句每次均需要编译和优化
u 有效降低网络流量
u 只需通过网络发送一条调用存储过程的语句,不需要传递大量 的SQL语句代码
u 提高数据库的安全性
销售管理数据库中存储过程的运用
带输入参数的存储过程 (续)
u 执行输入参数的存储过程两种方法:
u 使用参数名传递参数值 EXEC 存储过程名 [@参数名=参数值 ][DEFAULT] [,…n]
u 按位置传递参数值
EXEC 存储过程名 [参数值1,参数值2,…]
销售管理数据库中存储过程的运用
带输入参数的存储过程 (续)
u 【例9.8】利用存储过程listEmployee,查找工资超过 4000元的的男员工和工资超过3000元女员工的详细信息。
代码如下: EXEC listEmployee @sex='男',@salary=4000 EXEC listEmployee @salary=3500,@sex='女'
销售管理数据库中存储过程的运用
销售管理数据库中存储过程的运用
存储过程的组成
存储过程的定义中包含如下的两个主要组成部分。 (1)过程名称及其参数的说明:包括所有的输入参数以及传给调用者 的输出参数。 (2)过程的主体:也称为过程体,针对数据库的操作语句 (Transact-SQL 语句),包括调用其它存储过程的语句。
销售管理数据库中存储过程的运用
u 创建存储过程
CREATE PROCEDURE AS SQL语句集
u 验证准确性 EXEC <存储过程名>
销售管理数据库中存储过程的运用
带输入参数的存储过程
u 创建带输入参数的存储过程
CREATE [ PROC | PROCEDURE] 存储过程名 [ { @参数名称 参数数据类型 } [ = 参数的默认值 ] [ ,...n ] [ WITH ENCRYPTION]
销售管理数据库中存储过程的运用
系统存储过程
常用系统存储过程: u sp_tables:返回可在当前环境中查询的对象列表。这代表可
在 FROM 子句中出现的任何对象。 u sp_stored_procedures:返回当前环境中的存储过程列表。 u sp_rename:在当前数据库中更改用户创建对象的名称。此对
u 存储过程具有安全性和所有权连接 u 存储过程可以附加安全证书
销售管理数据库中存储过程的运用
u 系统存储过程 u 用户自定义存储过程 u 扩展存储过程
存储过程的分类
销售管理数据库中存储过程的运用
存储过程的分类 (续)
u 系统存储过程
u 完成SQL Server2005的许 多过来活动
u 以sp_开头 u 物理上存储在数据库的
销售管理数据库中存储过程的运用
存储过程语法格式
语法格式: CREATE [ PROC | PROCEDURE] 存储过程名 [ { @参数名称 参数数据类型 } [ = 参数的默认值 ] [ OUTPUT ] ] [ ,...n ] [ WITH ENCRYPTION] [WITH RECOMPILE ] AS sql_statement
销售管理数据库中存储 过程的运用
2020/12/21
销售管理数据库中存储过程的运用
技能目标
u 理解存储过程概念以及存储过程的作用; u 学会创建、删除、存储过程。
销售管理数据库中存储过程的运用
知识目标
u 理解存储过程的作用; u 了解系统存储过程和扩展存储过程; u 掌握存储过程的基本类型; u 掌握创建、删除、修改和加密存储过程; u 掌握执行各类存储过程
象可以是表、索引、列、别名数据类型。 u sp_renamedb:更改数据库的名称。
销售管理数据库中存储过程的运用
系统存储过程
u sp_help:报告有关数据库对象(sys.sysobjects 兼容视图中列出的所有 对象)、用户定义数据类型或 SQL Server 2005 提供的数据类型的信息。
修改存储过程
u ALTER PROCEDURE语句的语法格式如下:
ALTER [ PROC | PROCEDURE] 存储过程名 [ { @参数名称 参数数据类型 } [ = 参数的默认值 ] [ OUTPUT ] ] [ ,...n ] [ WITH ENCRYPTION]
[WITH RECOMPILE ] AS sql_statement
[WITH RECOMPILE ] AS sql_statement
销售管理数据库中存储过程的运用
带输入参数的存储过程
u 【例9.4】创建一个存储过程,实现根据订单号获取该订 单的信息的功能。
CREATE PROCEDURE OrderDetail @OrderID INT AS SELECT * FROM Sell_Order WHERE SellOrderId=@OrderID
代码如下: CREATE PROCEDURE PRO_SUM @N1 INT,@N2 INT, @RESULT INT OUTPUT AS SET @RESULT = @N1 + @N2
销售管理数据库中存储过程的运用
带输出参数的存储过程
u 【例9.13】执行【例9.11】创建的PRO_SUM存储过程。
u 【例9.7】使用【例9.5】中创建的存储过程 customer_order,获取 “三川实业有限公司”的信息, 包括联系人姓名、联系方式以及该公司订购产品的明细表。
代码如下: EXEC customer_order @customername='三川实业有限公司'
销售管理数据库中存储过程的运用
带输入参数的存储过程 (续)
参数: u @参数名称:存储过程可以没有参数。也可以声明一个或多个参数,参数名称
必须@作为第一个字符。参数后面带OUTPUT,表示为输出参数。 u WITH ENCRYPTION:对存储过程加密,其他用户无法查看存储过程的定义。 u WITH RECOMPILE:每次执行该存储过程都重新进行编译。 u sql_statemen:该存储过程中定义的编程语句。
客户机
调用存储过程实现特定功能
客户机
数据库服务器 存储过程
优点:1. 直接调用特定存储过程实现某种功能,不需要用户自己书写SQL语句 2. 存储过程存放在服务器上,不需网络传输 3. 存储过程经过编译和优化,执行效率高 4. 安全性高
销售管理数据库中存储过程的运用
存储过程的优点
u 允许模块化程序设计
带输入参数的存储过程 (续)
u 【例9.11】利用Name_Employee存储过程查询所有员工信 息和姓王的员工信息
u EXEC Name_Employee
查询所有员工信息
u EXEC Name_Employee ‘王%’
查询姓王的员工信息
销售管理数据库中存储过程的运用
带输出参数的存储过程
u 【例9.12】 创建带返回参数的存储过程求两个整数的和。
不带参数的存储过程
u 创建不带参数的存储过程 语法格式:
CREATE [ PROC | PROCEDURE] 存储过程名 [ WITH ENCRYPTION] [WITH RECOMPILE ]
AS sql_statement
销售管理数据库中存储过程的运用
不带参数的存储过程
u 【例9.1】创建一个名为Cu_information的存储过程,用 于查询客户的信息。 use student CREATE PROCEDURE Cu_information AS SELECT * FROM Customer