数据库《创建和使用存储过程》实验报告.doc
文本预览下载声明
xx大学计算机与信息技术学院
实验报告
姓 名 学 号 专业班级 课程名称 实验日期 成 绩 指导教师 批改日期 实验名称 T-SQL是Microsoft公司在关系型数据库管理系统SQL Server中的SQL-3标准的实现,是微软对SQL的扩展,具有SQL的主要特点,同时增加了变量,运算符,函数,流程控制和注释等语言元素,使得其功能更加强大. 存储过程使数据管理变得更容易。通常在设计数据库的同时,设计其相应的功能。比如,在学生选课数据库中,需要完成如下工作:
1、根据学号,检索某位学生的各科成绩和平均成绩。
2、根据课程名,检索选修某门课程的学生姓名和学生总人数。
3、但在学生表中修改某个同学的学号时,要检索这个同学的选课表信息,并在选课表中调整相应的学号。
4、判断在选课表中加入的新记录是否在学生表中存在。
我们可以将上述功能以存储过程的形式存储在数据库中,以供日后调用。
SQL Server中存储过程分为两类:系统存储过程和用户自定义的存储过程。系统存储过程主要存储在master数据库中,并一般以sp_为前缀,它们从系统表中获取信息,以完成许多管理性或信息性的活动。系统存储过程可以在其他数据库中对其进行调用,在调用时不必在存储过程名前加上数据库名。在创建新数据库时,一些系统存储过程会在新数据库中被自动创建。用户定义的存储过程是由用户创建的,用来完成特定设计功能。
存储过程的主要优点:
1、模块化编程。创建一次存储过程,它就能永久存储在数据库中,可以在程序中重复调用任意多次。所有的客户端程序可以使用同一个存储过程实现对数据库的操作,从而确保数据访问和操作的一致性,也提高了应用程序的可维护性。
2、快速执行。当某操作要求大量的Transact-SQL代码或者要重复执行时,存储过程要比Transact-SQL批处理代码快得多。当创建存储过程时,SQL Server对它进行分析和优化,在第一次执行后,它就驻留在内存中,省去了重新分析、重新优化和重新编译的工作,提高了执行效率。
3、减少网络通信量。存储过程可以由几百条Transact-SQL语句组成,但存储过程存放在服务器端,因此客户端要执行存储过程,只需要传送一条执行存储过程的命令,从而减少了网络流量和网络传输时间。
4、提供安全机制。可以授予用户执行存储过程的权限,那么即使该用户没有访问在存储过程中引用的表或视图的权限,该用户也完全可以执行存储过程。
1. 使用创建存储过程模板创建存储过程
(1)打开SQL Server Management Studio,展开节点“对象资源管理器”|“数据定义”|“可编程性”|“存储过程”,在窗口的右侧显示出当前数据库的所有存储过程。单击鼠标右键,在弹出的快捷菜单中选择“新建存储过程”命令,如图1所示。
图1
(2)在打开的SQL命令窗口中,系统给出了创建存储过程命令的模板,如图2所示。
图2
在模板中可以输入创建存储过程的T-SQL语句,按照下面的代码建立存储过程的命令模板后,单击“执行”按钮,即可创建存储过程,如图3所示。
图3
(3)在新建的getstudent存储过程可以通过以下代码来执行,执行结果如图4所示。
图4
2. 使用SQL命令窗口创建存储过程
(1)打开SQL Server Management Studio,选择“对象资源管理器”中的“学生数据库”,然后用鼠标单击“新建查询”按钮,打开SQL命令窗口,在可编辑区输入如下代码,单击“执行”按钮即可创建存储过程,如图5所示。
图5
(2)新建立的getstudent_all存储过程可以通过以下代码执行,执行结果同使用创建存储过程模板创建的存储过程。
创建一个不带参数的存储过程,从Course中选择所有“Grade90”的记录,输入如下语句,单击“执行”,结果如图8-6所示。
图6
创建一个带参数的存储过程,从Course中选择Grade介于65-95之间的记录,输入如下语句,单击“执行”,结果如图7所示。
图7
创建与执行带输入、输出参数的存储过程,实现显示“Course”中给定学号的信息,并输出“Course”中该学号的学生所选课程中的最高分数和最低分数,具体步骤如下:1)单击Microsoft SQL Server Management Studio,选择“对象资源管理器”中的“数据定义”。
2)单击常用工具栏中的“新建查询”按钮,新建一个数据库引擎查询文档。
3)在数据库引擎文档中输入如下代码,单击“执行”按钮,即可创建名称为getstudent_3的存储过程,如图8所示。
图8
(3)存储过程创建成功后,输入如下T-SQL语句,单击“执行”按钮,执行已经创建的存储过程getstudent_3,执行结果如
显示全部