资源描述
存储过程创建,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,存储过程创立,1、写出如下查询语句:,查询xsqk表中,计算机网络专业的学生根本信息,并且按照学号降序排列,select * from xsqk,where 专业名=计算机网络,order by 学号 desc,2、思考,如果在网络上同时有5000个用户执行这一查询,那么效劳器会出现什么情况?如何解决这一情况?,解决方法:最好将查询语句的代码都放到sql效劳器上,而不是客户机中。,2,存储过程创立,9.1 存储过程概述,9.2 创立管理简单存储过程,9.3 创立管理带参的存储过程,3,存储过程创立,1.存储过程概念,存储过程是为了实现某个特定任务,由一组预先编译好的SQL语句组成,将其放在效劳器上,由用户通过指定存储过程的名字来执行的一种数据库对象。,2.存储过程类型,系统存储过程,用户自定义存储过程,系统存储过程存储以SP_为前缀,是由SQL Server2005自己创立、管理和使用的一种特殊的存储过程,不能对其进展修改或删除。如Sp_helpdb、Sp_renamedb等。,由用户自行创立的存储过程,可以输入参数、向客户端返回表格或结果、消息等,也可以返回输出函数。,4,存储过程创立,9.1 存储过程概述,9.2 创立管理简单存储过程,9.3 创立管理带参的存储过程,5,存储过程创立,9.2.1 无参存储过程的创立,9.2.2 无参存储过程的执行,9.2.3 查看存储过程,9.2.4 修改存储过程,9.2.5 删除存储过程,6,存储过程创立,使用SQL语句创立存储过程,1语法格式如下:,CREATE PROC EDURE procedure_name,AS sql_statement .n ,2语法注释:,procedure_name:新建存储过程的名称,其名称必须符合标识符命名规那么,且对于数据库及其所有者必须唯一。,sql_statement:指存储过程中的任意数目和类型的Transact-SQL语句。,7,存储过程创立,例1:在xuesheng数据库中,创立一个名称为pr_wangluo的存储过程,该存储过程查询xsqk表中,计算机网络专业的学生根本信息,并且按照学号降序排列,代码如下:,CREATE PROC pr_wangluo,AS,select * from xsqk,where 专业名=计算机网络,order by 学号 desc,GO,8,存储过程创立,只能在当前数据库中创立存储过程。,数据库的所有者可以创立存储过程,也可以授权其他用户创立存储过程。,存储过程是数据库对象,其名称必须遵守标识符命名规那么。,不能将 CREATE PROCEDURE 语句与其它 SQL 语句组合到单个批处理中。,9,存储过程创立,9.2.1 无参存储过程的创立,9.2.2 无参存储过程的执行,9.2.3 查看存储过程,9.2.4 修改存储过程,9.2.5 删除存储过程,10,存储过程创立,对存储在效劳器上的存储过程,可以使用EXECUTE命令或其名称执行它,其语法格式如下:,EXEC UTE procedure_name,对上例的存储过程pr_wangluo的执行语句如下:,EXECUTE pr_wangluo,或者,EXEC pr_wangluo,11,存储过程创立,9.2.1 无参存储过程的创立,9.2.2 无参存储过程的执行,9.2.3 查看存储过程,9.2.4 修改存储过程,9.2.5 删除存储过程,12,存储过程创立,1.使用对象资源管理器查看存储过程,2.使用系统存储过程查看存储过程信息,1使用sp_helptext查看存储过程的文本信息.,其语法格式为: sp_helptext 存储过程名,2使用sp_help查看存储过程的一般信息.,其语法格式为: sp_help 存储过程名,13,存储过程创立,9.2.1 无参存储过程的创立,9.2.2 无参存储过程的执行,9.2.3 查看存储过程,9.2.4 修改存储过程,9.2.5 删除存储过程,14,存储过程创立,修改存储过程语法格式为:,ALTER PROCDURE procedure_name,parameter data_type,=defaultOUTPUT,n,WITH RECOMPILE | ENCRYPTION | RECOMPILE,ENCRYPTION ,AS,Sql_statement,15,存储过程创立,例2:修改存储过程pr_wangluo,查询出xsqk表中,计算机应用专业学生根本信息,并按学号升序排列。,其程序清单如下:,ALTER PROC pr_wangluo,As,select * from xsqk,where 专业名=计算机应用,order by 学号,GO,16,存储过程创立,9.2.1 无参存储过程的创立,9.2.2 无参存储过程的执行,9.2.3 查看存储过程,9.2.4 修改存储过程,9.2.5 删除存储过程,17,存储过程创立,1.,使用,SSMS,对象资源管理器删除存储过程,2.,使用,DROP PROCEDURE,语句删除存储过程,DROP PROCEDURE,语句可以一次从当前数据库中将一个或多个存储过程或过程组删除,其语法格式如下:,DROP PROCEDURE,存储过程名称,n,例,15,:删除存储过程,pr_wangluo,USE xuesheng,GO,DROP PROCEDURE pr_wangluo,GO,18,存储过程创立,9.1 存储过程概述,9.2 创立管理简单存储过程,9.3 创立管理带参的存储过程,19,存储过程创立,9.3.1 创立带参存储过程的语法,9.3.2 创立/执行带输入参数的存储过程,9.3.3 创立/执行带输出参数的存储过程,20,存储过程创立,1语法格式如下:,CREATE PROCDURE procedure_name,parameter data_type,=defaultOUTPUT,n,WITH RECOMPILE | ENCRYPTION | RECOMPILE,ENCRYPTION ,AS,Sql_statement,21,存储过程创立,2语法注释:,parameter:存储过程中的输入和输出参数。,data_type:参数的数据类型。,OUTPUT:说明参数是返回参数。该选项的值可以返回给EXECUTE。,22,存储过程创立,9.3.1 创立带参存储过程的语法,9.3.2 创立/执行带输入参数的存储过程,9.3.3 创立/执行带输出参数的存储过程,23,存储过程创立,例3:在xuesheng数据库中创立一个存储过程pr_zhuanye,查询出xsqk表中专业名为某个专业的学生信息。具体哪个专业在存储过程执行时指定。,CREATE PROC pr_zhuanye,zhuanyeming varchar(50),As,select * from xsqk,where 专业名= zhuanyeming,order by 学号,24,存储过程创立,语法格式如下:, EXEC UTE , return_status = procedure_name , parameter = value | variable OUTPUT | DEFAULT ,.n , WITH RECOMPILE ,对上例的存储过程,pr_zhuanye,的执行语句如下:,exec pr_zhuanye ,计算机网络,exec pr_zhuanye ,计算机应用,25,存储过程创立,在输入参数中使用默认值,在执行存储过程pr_zhuanye时,如果没有指定参数,那么系统运行就会出错;此时如果希望在执行时不给出参数也能正确运行,,那么在创立存储过程时给输入参数指定默认值。,26,存储过程创立,例,4,:在,xuesheng,数据库中修改存储过程,pr_zhuanye,查询出,xsqk,表中专业名为某个专业的学生信息。具体哪个专业在存储过程执行时指定。如果不指定,默认是计算机网络专业。,ALTER PROC pr_zhuanye,zhuanyeming varchar(50)=,计算机网络,As,select * from xsqk,where,专业名,= zhuanyeming,order by,学号,执行时,,exec pr_zhuanye /默认是,计算机网络,exec pr_zhuanye ,计算机应用,27,存储过程创立,9.3.1 创立带参存储过程的语法,9.3.2 创立/执行带输入参数的存储过程,9.3.3 创立/执行带输出参数的存储过程,28,存储过程创立,例5:在xuesheng数据库中创立一个存储过程pr_renshu,统计出计算机网络专业的人数。并把结果传出存储过程。,CREATE PROC pr_renshu,shu int output,As,Select shu=count(姓名),From xsqk,Where 专业名= 计算机网络,存储过程的执行:,declare rs int,exec pr_renshu rs output,select rs as 计算机网络专业人数,29,存储过程创立,例,6,:,在,xuesheng,数据库中修改存储过程,pr_renshu,统计出某个专业的人数。并把结果传出存储过程。具体统计哪个专业由执行时给出。,实现的,T-SQL,语句,:,ALTER PROC pr_renshu,zhuanye varchar(50),shu int output,As,Select shu=count(,姓名,),From xsqk,Where,专业名,= zhuanye,执行时代码:,declare rs int,zy varchar(50),select zy=,计算机网络,exec pr_renshu zy, rs output,select rs,30,存储过程创立,例7:在xuesheng数据库中创立一个带参数的存储过程xuankexinxi,查询某个学生所选的所有课程的成绩情况。学生姓名由存储过程执行时给出。,执行这个存储过程,查询马立刚所选的课程信息。,31,存储过程创立,create proc xuankexinxi,name varchar(20),as,select * from kc,xs_kc,xsqk,where xsqk.,学号,=xs_kc.,学号,and xs_kc.,课程号,=kc.,课程号,and xsqk.,姓名,=name,32,存储过程创立,执行时代码:,exec xuankexinxi ,马立刚,33,The End,谢谢您的聆听!,期待您的指正!,
展开阅读全文