第七章存储过程回顾索引分为哪几类?您在学生信息表中创建了主键列学号,SQLServer将自动创建哪些索引?根据您的理解,什么是视图?它有什么好处?本章目标了解存储过程的优点掌握常用的系统存储过程掌握如何创建存储过程掌握如何调用存储过程存储过程使用MicrosoftSQLServer2005创建应用程序时,Transact-SQL编程语言是应用程序和MicrosoftSQLServer数据库之间的主要编程接口。使用Transact-SQL程序时,可用两种方法存储和执行程序:可将程序存储在本地,然后创建向SQLServer发送命令并处理结果的应用程序。也可将程序作为存储过程存储在SQLServer中,然后创建执行存储过程并处理结果的应用程序。存储过程存储过程是由SQL语句书写的过程,这个过程经编译和优化后存储在数据库服务器中,使用时只要调用即可。存储过程(procedure)类似于C语言中的函数用来执行管理任务或应用复杂的业务规则存储过程可以带参数,也可以返回结果intsum(inta,intb){ints;s=a+b;returns;}存储过程相当于C语言中的函数什么是存储过程2-1存储过程------------------------单个SELECT语句SELECT语句块SELECT语句与逻辑控制语句可以包含什么是存储过程2-2存储过程可以包含数据操纵语句、变量、逻辑控制语句等执行速度更快允许模块化程序设计提高系统安全性减少网络流通量存储过程的优点系统存储过程由系统定义,存放在master数据库中类似C语言中的系统函数系统存储过程的名称都以“sp_”开头或”xp_”开头用户自定义存储过程由用户在自己的数据库中创建的存储过程类似C语言中的用户自定义函数存储过程的分类常用的系统存储过程4-1系统存储过程说明sp_databases列出服务器上的所有数据库。sp_helpdb报告有关指定数据库或所有数据库的信息sp_renamedb更改数据库的名称sp_tables返回当前环境下可查询的对象的列表sp_columns回某个表列的信息sp_help查看某个表的所有信息sp_helpconstraint查看某个表的约束sp_helpindex查看某个表的索引sp_stored_procedures列出当前环境中的所有存储过程。sp_password添加或修改登录帐户的密码。sp_helptext显示默认值、未加密的存储过程、用户定义的存储过程、触发器或视图的实际文本。EXECsp_databasesEXECsp_renamedb'Northwind','Northwind1'USEstuDBGOEXECsp_tablesEXECsp_columnsstuInfoEXECsp_helpstuInfoEXECsp_helpconstraintstuInfoEXECsp_helpindexstuMarksEXECsp_helptext'view_stuInfo_stuMarks'EXECsp_stored_procedures常用的系统存储过程4-2修改数据库的名称(单用户访问)列出当前系统中的数据库当前数据库中查询的对象的列表返回某个表列的信息查看表stuInfo的信息查看表stuInfo的约束查看表stuMarks的索引查看视图的语句文本查看当前数据库中的存储过程演示:常用的存储过程下面介绍几种常用的系统过程。1.sp_help报告有关数据库对象(sys.sysobjects兼容视图中列出的所有对象)、用户定义数据类型或SQLServer2005提供的数据类型的信息。语法格式:sp_help[[@objname=]'name'](1)如果执行不带参数的sp_help,则返回当前数据库中现有的所有类型对象的汇总信息,即Name(对象名称)、所有者(对象所有者)及Object_type(对象类型)。返回有关所有对象的信息。以下示例将列出有关“教务管理系统”数据库中每个对象的信息。USE教务管理系统;GOEXECsp_help;GO(2)如果name是SQLServer数据类型或用户定义数据类型,则sp_help将返回此结果集,包括Type_name(数据类型名称)、Storage_type(SQLServer类型名称)、长度(数据类型的物理长度(以字节为单位))、Prec(精度(数字总位数))、小数位数(小数点右边的数字位数)、Nullable(指示是否允许NULL值:“是”或“否”)、Default_name(绑定到此类型的默认值的名称)、Rule_name(绑定到此类型的规则的名称)、排序规则(数据类型的排序规则)。USE教务管理系统;GOEXECsp_helpsmallint;GO定义存储过程的语法CREATEPROC[EDURE]存储过程名@参数1数据类型=默认值OUTPUT,……,@参数n数据类型=默认值OUTPUTASSQL语句和C语言的函数一样,参数可选参数分为输入参数、输出参数输入参数允许有默认值注意:存储过程与函数的不同,存储过程不能在被调用的位置返回数据,也不能应用在语句中。存储过程使用变量的形式来返回数据。如何创建存储过程EXECUTE(执行)语句用来调用存储过程调用的语法EXEC过程名[参数]调用存储过程EXECproc_stu创建带参数的存储过程存储过程的参数分两种:输入参数输出参数intsum(inta,intb){ints;s=a+b;returns;}c=sum(5,8)传入参数值输入参数:用于向存储过程传入值,类似C语言的按值传递;输出参数:用于在调用存储过程后,返回结果,类似C语言的按引用传递;返回结果总结存储过程是一组预编译的SQL语句,它可以包含数据操纵语句、变量、逻辑控制语句等存储过程允许带参数,参数分为:输入参数输出参数其中,输入参数可以有默认值。输入参数:可以在调用时向存储过程传递参数,此类参数可用来向存储过程中传入值输出参数从存储过程中返回(输出)值,后面跟随OUTPUT关键字