当前课程知识点:SQL SERVER数据库技术 > 第9章 创建与管理存储过程 > 9.6 课堂练习-实现存储过程和函数 > 实现存储过程和函数
b) 本次练习的目标是创建一个接受输入参数并将输出参数与成功或失败标志一起返回的存储过程。
c) 确保虚拟机器2779A-2780A-09正在运行,并且您作为 Student 登录。
d) 如果未启动虚拟机,请执行下列步骤:
2. 关闭其他正在运行的虚拟机。
3. 启动该虚拟机。
4. 在“登录到 Windows”对话框中,通过使用用户名 Student 及密码 Pa$$w0rd 完成该登录过程。
b) 执行以下步骤以创建简单存储过程:
5. 单击“开始”,指向“所有程序”,指向“Microsoft SQL Server 2005”,然后单击“SQL Server Management Studio”。
6. 在“连接到服务器”对话框中,指定下表中的值,然后单击“连接”。
1. 属性 |
2. 值 |
7. 服务器类型 |
8. 数据库引擎 |
9. 服务器名称 |
10. MIAMI |
11. 身份验证 |
12. Windows 身份验证 |
13. 在“文件”菜单上,指向“打开”,然后单击“文件”。
14. 打开 E:\Practices 文件夹中的 StoredProcedures.sql 查询文件。出现提示时使用 Windows 身份验证连接到 MIAMI。
15. 检查注释“Get reviews for all products”下的代码,然后选中这些代码并单击“执行”。
16. 查看查询输出,并确认命令已成功完成。
17. 选中注释“Test stored procedure”下的查询,然后在工具栏上单击“执行”。
18. 查看查询结果。
b) 执行以下步骤以创建接受输入参数的存储过程:
19. 选中注释“Alter procedure to get specific product review”下的 ALTER PROCEDURE 语句,然后在工具栏上单击“执行”。
20. 查看查询输出,并确认命令已成功完成。
21. 选择注释“Test procedure with parameter”下的查询,然后在工具栏上单击“执行”。
22. 查看查询结果。注意第一条 EXECUTE 语句产生了正确的结果,但是第二条 EXECUTE 语句失败,因为参数未传给过程,并且该参数在过程中没有默认值。
23. 选中注释“Alter procedure to get specific product review or all reviews”下的 ALTER PROCEDURE 语句,然后在工具栏上单击“执行”。
24. 查看查询输出,并确认命令已成功完成。
25. 选中注释“Test procedure with parameter and default”下的查询,然后在工具栏上单击“执行”。
26. 查看查询结果。请注意,第一条 EXECUTE 语句生成了指定产品的结果,而第二条 EXECUTE 语句生成了所有产品的结果。
b) 执行以下步骤以创建接受输出参数并返回成功或失败值的存储过程:
27. 选中注释“Alter procedure to output number of reviews and check product exists”下的 ALTER PROCEDURE 语句,然后在工具栏上单击“执行”。
28. 查看查询输出,并确认命令已成功完成。
29. 选中注释“Test output and return values”和 GO 语句之间的查询,然后在工具栏上,单击“执行”。
30. 查看查询结果。请注意,结果显示正确,后跟得自于输出参数的评审数量。
31. 修改 EXECUTE 语句,将 OUTPUT 关键字删除。
32. 再次选中注释“Test output and return values”和 GO 语句之间的查询,然后在工具栏上,单击“执行”。
33. 查看查询结果。请注意结果显示正确,但是评审数量返回 NULL,因为 OUTPUT 关键字已删除。
34. 修改 EXECUTE 语句,将 OUTPUT 关键字重新放回,并将输入参数从 937 更改为 DEFAULT。
35. 再次选中注释“Test output and return values”和 GO 语句之间的查询,然后在工具栏上,单击“执行”。
36. 查看查询结果。注意所有评审现在都已返回,并且评审数量也已增加。
37. 修改 EXECUTE 语句,将输入参数从 DEFAULT 更改为 100。
38. 再次选中注释“Test output and return values”和 GO 语句之间的查询,然后在工具栏上,单击“执行”。
39. 查看查询结果。注意,没有返回任何评审,并且出现了消息“ProductID does not exist”,因为使用了无效的产品 ID。
b) 执行以下步骤以删除存储过程:
40. 选中注释“Drop the procedure”下的 DROP PROCEDURE 语句,然后在工具栏上单击“执行”。
41. 查看查询输出,并确认命令已成功完成。
42. 关闭 SQL Server Management Studio 而不将任何更改保存到文件。
b) 本次课堂练习的目标是创建标量函数、内联表值函数以及多语句表值函数。
c) 确保虚拟机器2779A-2780A-09运行,且以 Student 身份登录。
d) 如果未启动虚拟机,请执行下列步骤:
43. 关闭其他正在运行的虚拟机。
44. 启动该虚拟机。
45. 在“登录到 Windows”对话框中,通过使用用户名 Student 及密码 Pa$$w0rd 完成登录过程。
b) 执行以下步骤以创建标量函数:
46. 单击“开始”,指向“所有程序”,指向“Microsoft SQL Server 2005”,然后单击“SQL Server Management Studio”。
47. 在“连接到服务器”对话框中,指定下表中的值,然后单击“连接”。
1. 属性 |
2. 值 |
48. 服务器类型 |
49. 数据库引擎 |
50. 服务器名称 |
51. MIAMI |
52. 身份验证 |
53. Windows 身份验证 |
54. 在“文件”菜单上,指向“打开”,然后单击“文件”。
55. 打开 E:\Practices 文件夹中的 UserDefinedFunctions.sql 查询文件。出现提示时使用 Windows 身份验证连接到 MIAMI。
56. 选中注释“Create scalar function”下的代码,然后在工具栏上单击“执行”。
57. 查看查询输出,并确认命令已成功完成。
58. 选中注释“Test scalar function in SELECT”下的查询,然后在工具栏上单击“执行”。
59. 查看查询结果。注意大部分产品都没有评审,因此显示平均评级为 0。
60. 选中注释“Test scalar function in WHERE”下的查询,然后在工具栏上单击“执行”。
61. 查看查询结果。注意只返回了有评审的产品。
b) 执行以下步骤以创建内联表值函数:
62. 选择注释“Create inline function”下的 CREATE FUNCTION 语句,然后在工具栏上单击“执行”。
63. 查看查询输出,并确认命令已成功完成。
64. 选择注释“Test inline function”下的查询,然后在工具栏上单击“执行”。
65. 查看查询结果。注意只显示了一件产品的评审。
b) 执行以下步骤以创建多语句表值函数:
66. 选择注释“Create multi- statement function”下的 CREATE FUNCTION 语句,然后在工具栏上单击“执行”。
67. 查看查询输出,并确认命令已成功完成。
68. 选中注释“Test multi-statement function”和 GO 语句之间的查询,然后在工具栏上,单击“执行”。
69. 查看查询结果。注意第一个结果集包含 3 或更高的评级,而第二个结果集包含低于 3 的评级。
b) 执行以下步骤以删除用户定义函数:
70. 选中注释“Drop user-defined functions”下的 DROP FUNCTION 语句,然后在工具栏上单击“执行”。
71. 查看查询输出,并确认命令已成功完成。
72. 关闭 SQL Server Management Studio 而不将任何更改保存到文件。
73. 本次课堂练习的目标是向存储过程添加错误处理。
b) 确保虚拟机器 2779A-2780A-09 正在运行,且以 Student 身份登录。
c) 如果虚拟机器尚未启动,则执行以下步骤:
1. 关闭任何其他正在运行的虚拟机器。
2. 启动虚拟机器。
3. 在“登录到 Windows”对话框中,使用用户名 Student 和密码 Pa$$w0rd 完成登录过程。
d) 执行以下步骤以将错误处理添加到存储过程:
74. 单击“开始”,指向“所有程序”,指向“Microsoft SQL Server 2005”,然后单击“SQL Server Management Studio”。
75. 在“连接到服务器”对话框中,指定下表中的值,然后单击“连接”。
1. 属性 |
2. 值 |
76. 服务器类型 |
77. 数据库引擎 |
78. 服务器名称 |
79. MIAMI |
80. 身份验证 |
81. Windows 身份验证 |
82. 在“文件”菜单上,指向“打开”,然后单击“文件”。
83. 打开 E:\Practices 文件夹中的 ErrorHandling.sql 查询文件。出现提示时使用 Windows 身份验证连接到 MIAMI。
84. 选择注释“Create procedure without error handling”下的代码,然后在工具栏上单击“执行”。
85. 查看查询输出,并确认命令已成功完成。
86. 选择注释“Test stored procedure without error handling”下的 EXECUTE 和 SELECT 查询,然后在工具栏上单击“执行”。
87. 查看查询结果。注意评审已成功添加到表中。
88. 将 @Rating 参数值从 4 更改为 10。
89. 重新选择注释“Test stored procedure without error handling”下的 EXECUTE 和 SELECT 查询,然后在工具栏上单击“执行”。
90. 查看查询结果。注意,由于 ratings 列上的 CHECK 约束,插入失败。
91. 选中注释“Implement error handling”下的 ALTER PROCEDURE 语句,然后在工具栏上单击“执行”。
92. 查看查询输出,并确认命令已成功完成。
93. 选中注释“Test stored procedure with error handling”下的 EXECUTE 查询,然后在工具栏上单击“执行”。
94. 查看查询结果。注意,错误号和错误消息显示,因为 CATCH 块处理错误成功。
95. 选中位于文件结束处的 DROP PROCEDURE 语句,然后单击“执行”。
96. 关闭 SQL Server Management Studio 而不将任何更改保存到文件。
ii. 可以创建指定执行上下文的存储过程或用户定义函数,以避免当模块调用其他数据库对象时所带来的权限相关问题。可使用 CREATE PROCEDURE 语句的 EXECUTE AS 子句使存储过程在执行时模拟另一个用户。
b) 要创建指定执行上下文的存储过程:
97. 单击“开始”,指向“所有程序”,指向“Microsoft SQL Server 2005”,然后单击“SQL Server Management Studio”。
98. 在“连接到服务器”对话框中,指定下表中的值,然后单击“连接”。
1. 属性 |
2. 值 |
99. 服务器类型 |
100. 数据库引擎 |
101. 服务器名称 |
102. MIAMI |
103. 身份验证 |
104. Windows 身份验证 |
105. 在“文件”菜单上,指向“打开”,然后单击“文件”。
106. 打开 E:\Democode 文件夹中的 ExecutionContext.sql 查询文件。出现提示时使用 Windows 身份验证连接到 MIAMI。
107. 选中注释“Preparation tasks”下的代码,然后在工具栏上单击“执行”按钮。这将创建两个 Windows 用户以及 AdventureWorks 数据库中对应用户的登录名。
108. 选中注释“Execute as CALLER”下的代码,然后在工具栏上单击“执行”按钮。这将创建 DisplayContext 存储过程。
109. 选中注释“Grant user permissions”下的代码,然后在工具栏上单击“执行”按钮。这将允许两个用户都能访问 DisplayContext 存储过程。
110. 单击“开始”和“运行”,然后执行以下命令:
111. runas /noprofile /user:MIAMI\Lori cmd
112. 提示 Lori 的密码时,输入 Pa$$w0rd。
113. 在新的命令提示符窗口中,执行以下命令:
i. sqlcmd -E -Q "EXEC dbo.DisplayContext"
114. 您将作为 Lori 连接到 SQL Server,并且 DisplayContext 存储过程将执行。返回的 UserName 是 CALLER 的用户名 Lori。
115. 使该命令提示符窗口保持打开状态,然后返回 SQL Server Management Studio。
116. 选中注释“Execute as 'Adam'”下的代码,然后在工具栏上单击“执行”按钮。这将更改 DisplayContext 存储过程以作为 Adam 执行。
117. 使 SQL Server Management Studio 保持打开状态,然后返回标题为“cmd (作为 MIAMI\Lori 运行)”的命令提示符窗口。按“向上箭头”键重复上一条命令。返回的 UserName 为 Adam。
118. 使该命令提示符窗口保持打开状态,然后返回 SQL Server Management Studio。
119. 选中注释“Execute as OWNER”下的代码,然后在工具栏上单击“执行”按钮。这将更改 DisplayContext 存储过程以作为该存储过程的所有者执行。
120. 使 SQL Server Management Studio 保持打开状态,然后返回标题为“cmd (作为 MIAMI\Lori 运行)”的命令提示符窗口。按“向上箭头”键重复上一条命令。返回的 UserName 为 dbo。
121. 使该命令提示符窗口保持打开状态,然后返回 SQL Server Management Studio。
122. 选中注释“Clean up”下的代码,然后在工具栏上单击“执行”按钮。
123. 这将从数据库中删除该存储过程以及用户。
124. 关闭 SQL Server Management Studio,然后关闭命令提示符窗口。
-1.1 数据库基础知识
--数据库的概念
--数据库概念
--数据模型(1)
--数据模型(2)
--数据模型
--实体间的联系
--E-R图
--数据技术的发展
--数据库技术发展
-1.1 数据库基础知识--作业
-1.2 SQL SERVER简介
--数据库应用场景
--企业应用
--安装与配置
-1.2 SQL SERVER简介--作业
-1.3 课堂练习-安装和配置SQL SERVER2008
-职场小故事之一——数据库工程师采访录(1)
-2.1 数据库对象及构成
--sql server 2008数据库中的文件和文件组的详解
--管理数据库和文件
--创建文件组
--文件和文件组
-2.1 数据库对象及构成--作业
-2.2 创建数据库
--使用SQL SERVER Management Studio创建数据库
-2.2 创建数据库--作业
-2.3 修改数据库
--使用T-SQL扩充数据库或事务日志的容量-01(操作演示)
--使用T-SQL扩充数据库或事务日志的容量-02(操作演示)
-2.3 修改数据库--作业
-2.4 重命名或删除数据库
-2.4 重命名或删除数据库--作业
-2.5 课堂练习-创建数据库和数据库文件
-职场小故事之二 数据库工程师采访录(2)
-3.1 数据表设计
--数据表设计
-3.1 数据表设计--作业
-3.2 创建数据表
--创建数据表
-3.2 创建数据表--作业
-3.3 修改数据表结构
-3.3 修改数据表结构--作业
-3.4 删除数据表
-3.4 删除数据表--作业
-3.5 课堂练习-创建数据类型和数据表
--数据类型详解
-- 创建数据类型和表
--程序源代码
-3.5 课堂练习-创建数据类型和数据表--作业
-扩展知识
--数据类型详解
-职场小故事之三——数据库工程师是干什么的?
-4.1 合并多个查询结果中的数据
-4.1 合并多个查询结果中的数据--作业
-4.2 抽取数据到另一个表中
-4.2 抽取数据到另一个表中--作业
-4.3 添加数据
--向表中添加数据
-4.3 添加数据--作业
-4.4 更新数据
--将“电子出版概论”课程的上课时间修改为“周二晚”——程序源代码
--将“01数据库”班级所有学生的选课密码初始化为#*3456
--更新表中的数据
-4.4 更新数据--作业
-4.5 删除数据
--学生为“00000005”的学生因故取消课程编号为“017”的选修课
--学号为“0000005”的学生因故取消“中餐菜肴制作”选修课——程序源代码
--删除表中数据
-4.5 删除数据--作业
-4.6 课堂练习
-职场小故事之四——冯玉才:“背”着数据库闯天下
-5.1 查询单个数据表数据
-5.1 查询单个数据表数据--作业
-5.2 使用聚合函数查询
--使用聚合函数查询
-5.2 使用聚合函数查询--作业
-5.3 使用分组查询结果
--查看报名人数大于15的各类课程的最少报名人数和最多报名人数
--查看报名人数大于15并且每组平均报名人数大于30的课程类别和各组的平均报名人数
--查看课程类别为“信息技术”、“管理”的平均报名人数,并给出其他课程类别
--使用分组查询
-5.3 使用分组查询结果--作业
-5.4 排序查询结果
--重新排序查询结果
-5.4 排序查询结果--作业
-5.5 多表连接查询数据
--比较连接查询
--多表连接查询数据
-第5章 查询与统计数据-作业
-5.6 课堂练习-查询与统计数据
--程序源代码
-职场小故事之五——IT独行侠数据库独立咨询顾问牛新庄的故事
-6.1 索引的概述
--索引的技巧
--索引简介
--索引的分类
--索引的分类
-6.1 索引的概述--作业
-6.2 创建索引
--创建索引
-6.2 创建索引--作业
-6.3 重命名索引
--将sutdent表的IX_STUNAME索引重命名为IX_STUNAMENEW
--重命名索引
-6.3 重命名索引--作业
-6.4 删除索引
--删除索引
--删除索引
-6.4 删除索引--作业
-6.5 索引分析
--查询学号为“00000001”的学生信息,分析哪些索引被系统采用
--查询名为"林斌"的学生,分析执行该数据花费的磁盘活动量信息
--分析索引
-6.5 索引分析--作业
-6.6 索引维护
--使用UPDATE STATISTICS更新索引的统计信息
--维护索引
-6.6 索引维护--作业
-6.7 课堂练习-创建和优化索引
--创建和优化索引
--程序源代码
-职场小故事之六——数据库安全门事件
-实现索引
-7.1 数据完整性概述
--数据完整性的概述
--数据完整性概述
-7.1 数据完整性概述--作业
-7.2 创建约束
--创建主键约束
--创建主键约束
--添加唯一约束
--创建唯一约束
--约束的STUNO列值只允许为8位数字,并且不可以为8个0
--删除检查约束
--创建检查约束
--为STUCOU表添加默认约束,STATE列的默认值“报名”
--创建默认约束
--创建外键约束
-7.2 创建约束--作业
-7.3 创建默认值
--创建并绑定默认值
--创建默认值
--解除默认值UnsureDefault与Teacher列的绑定
--删除默认值
-7.3 创建默认值--作业
-7.4 创建规则
--创建规则
--解除规则CreditRule与Course表Credit列的绑定
--删除规则
-7.4 创建规则--作业
-7.5 课堂练习-实现数据完整性
-- 实现数据完整性
--程序源代码
-职场小故事之七——数据库工程师的发展前景
-8.1 视图的概述
--视图的基本概念
--视图简介
-8.1 视图的概述--作业
-8.2 创建视图
--创建视图
--创建视图
-8.2 创建视图--作业
-8.3 修改视图
--修改视图并加密
--修改视图
-8.3 修改视图--作业
-8.4 重命名视图
--重命名视图
--重命名视图
-8.4 重命名视图--作业
-8.5 删除视图
--删除视图
--删除视图
-8.5 删除视图--作业
-8.6 课堂练习-实现视图
-- 实现视图
--程序源代码
-职场小故事之八——数据库面对的工作岗位及职责
-9.1 存储过程概述
--存储过程的优点
--存储过程的优点
-9.1 存储过程概述--作业
-9.2 创建与执行不带参数的存储过程
--创建存储过程,返回学生表中班级编号为“20000001”的所有数据行
--执行存储过程
-9.2 创建与执行不带参数的存储过程--作业
-9.3 创建与执行带参数的存储过程
--执行存储过程
-9.3 创建与执行带参数的存储过程--作业
-9.4 修改存储过程
--修改的存储过程
-9.4 修改存储过程--作业
-9.5 删除存储过程
--删除存储过程
--删除存储过程
-9.5 删除存储过程--作业
-9.6 课堂练习-实现存储过程和函数
-- 实现存储过程和函数
--程序源代码
-职场小故事之九——数据库错误致虎航安全事故
-10.1 触发器概述
--触发器的概述
-10.1 触发器概述--作业
-10.2 创建触发器
--创建触发器
--测试触发器
--创建触发器
-10.2 创建触发器--作业
-10.3 修改触发器
--测试结果
--修改触发器
-10.3 修改触发器--作业
-10.4 删除触发器
--删除触发器
--删除触发器
-10.4 删除触发器--作业
-10.5 禁用或启用触发器
--禁用触发器
--启用触发器
--禁用或启用触发器
-10.5 禁用或启用触发器--作业
-10.6 课堂练习-管理触发器
--程序源代码
-职场小故事之十——韩国农协银行事件透视数据库安全问题
-11.1 SQL SERVER安全机制
--安全设计理念
-11.1 SQL SERVER安全机制--作业
-11.2 管理登录名和用户
--创建登录名
-11.2 管理登录名和用户--作业
-11.3 管理角色
--角色
-11.3 管理角色--作业
-11.4 管理权限
--创建登录名
--创建用户
-11.4 管理权限--作业
-11.5 课堂练习-管理安全性
--管理安全性
--程序源代码
-11.5 课堂练习-管理安全性--作业
-职场小故事之十一——银行账号“泄密”虚惊
-12.1 脱机后复制数据库文件
--数据库脱机操作
-12.1 脱机后复制数据库文件--作业
-12.2 备份与还原数据库
-12.2 备份与还原数据库--作业
-12.3 数据的导入和导出
--数据导入与导出
-12.4 复制数据库
--复制数据库
--数据库复制
-12.5 课堂练习-灾难恢复
-- 灾难恢复
--程序源代码
-职场小故事之十二——2011年数据库泄密事件
-13.1 windows应用程序开发
-13.1 windows应用程序开发--作业
-13.2 ASP.NET网站开发
-13.2 ASP.NET网站开发--作业
-国家软件开发文档标准
--操作手册编写规范
-- 详细设计说明书编写规范
-- 项目开发总结报告编写规范
--用户手册编写规范