【精品】存储过程精品ppt课件.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《【精品】存储过程精品ppt课件.ppt》由会员分享,可在线阅读,更多相关《【精品】存储过程精品ppt课件.ppt(102页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、存储过程本章教学重点及要求n了解存储过程的概念、分类及优点。n掌握SQLServer2005中使用对象资源管理器创建和调用存储过程的方法。n掌握SQLServer2005中使用T-SQL语句创建和调用存储过程的方法。n掌握存储过程的查看、修改、删除和重命名等常用操作。第8章数据库基础8.1 存储过程概述8.2 存储过程的创建和执行8.3 查看和修改存储过程8.4 重命名存储过程8.5 删除存储过程8.6 存储过程的重新编译8.7 小结 8.1存储过程概述n存储过程(StoredProcedure)是指封装了服务器中T-SQL语句集合的数据库对象。对这些语句进行封装的目的就是便于以后的重复使用。
2、这些语句集合经过编译后存储在数据库中。以后,用户可以通过指定存储过程的名字并给出相应的参数(如果该存储过程带有参数)来执行它。n在编写存储过程时,数据库开发人员就可以使用SQLServer中所有主要的编程结构,如变量、数据类型、输入/输出参数、返回值、选择结构、循环结构、函数和注释等。8.1存储过程概述n8.1.1存储过程的分类n从功能上来看,SQLServer支持以下5种存储过程。n系统存储过程:系统存储过程主要存储在master数据库中,并且带有sp_前缀。系统存储过程主要从系统表中获取信息,从而为DBA管理SQLServer2005提供支持。n用户自定义存储过程:也称本地存储过程,是由用
3、户自行创建,并存储在用户数据库中的存储过程。8.1存储过程概述n8.1.2存储过程的优点n存储过程允许标准组件式编程n存储过程具有较快的执行速度n存储过程能够减少网络流量n存储过程可被作为一种安全机制来充分利用n存储过程允许进行模块化程序设计n存储过程可以自动完成需要预先执行的任务8.2存储过程的创建和执行n8.2.1系统表sysobjectsnSQLServer中,关于SQLServer数据库的一切信息都保存在它的系统表中,通常把这样的表称为元数据表。例如,在数据中创建的表、视图、用户自定义函数、存储过程、触发器等对象,都要在sysbojects中记录。n系统表sysobjects的主要字段
4、:Name(名称)、Id(标识符)和Type(类型)。8.2存储过程的创建和执行n8.2.2存储过程的创建n用T-SQL命令创建n语法格式:nCREATEPROC|PROCEDUREschema_name.procedure_name;numbernparametertype_schema_name.data_typenVARYING=defaultOUTPUT,.n8.2存储过程的创建和执行n8.2.2存储过程的创建n用T-SQL命令创建n语法格式:nWITH,.nnFORREPLICATIONnAS;.n|8.2存储过程的创建和执行n8.2.2存储过程的创建n用T-SQL命令创建n语法格式
5、:其中,procedure_option、sql_statement和method_specifier的定义如下:n:=ENCRYPTIONRECOMPILEEXECUTE_AS_Clausen:=BEGINstatementsENDn:=EXTERNALNAMEassembly_name.class_name.method_name8.2存储过程的创建和执行n8.2.2存储过程的创建n用T-SQL命令创建n参数含义:nSchema_name:存储过程所属架构名;nprocedure_name:新存储过程的名称。n;number:用于对同名过程进行分组的可选整数。nparameter:过程中的
6、参数。8.2存储过程的创建和执行n8.2.2存储过程的创建n用T-SQL命令创建n参数含义:ntype_schema_name.data_type:过程中的参数以及所属架构的数据类型。nVARYING:指定作为输出参数支持的结果集。ndefault:参数的默认值。nOUTPUT:指示参数是输出参数。8.2存储过程的创建和执行n8.2.2存储过程的创建n用T-SQL命令创建n参数含义:nRECOMPILE:指示该过程在运行时重新编译。nENCRYPTION:指示SQLServer将CREATEPROCEDURE语句的原始文本转换为密文格式。nEXECUTE_AS_Clause:指定在其中执行存储
7、过程的安全上下文。8.2存储过程的创建和执行n8.2.2存储过程的创建n用T-SQL命令创建n参数含义:nFORREPLICATION:使用FORREPLICATION选项创建的存储过程可用作存储过程筛选器,且只能在复制过程中执行。n:要包含在过程中的一个或多个T-SQL语句。n:用于创建CLR存储过程8.2存储过程的创建和执行n8.2.2存储过程的创建n用ManagementStudio创建n在对象资源管理器中,找到要创建存储过程的数据库,依次点击“可编程性可编程性”-“存储过程存储过程”。右击“存储过程存储过程”,选择“新建存储过程新建存储过程”,会在右面的查询编辑器中自动生成一个创建存储
8、过程的模板,进行修改,编写自己的源代码后,单击工具栏中的“执行执行”按钮即可。8.2存储过程的创建和执行n8.2.2存储过程的创建n例题n【例8-1】编写存储过程up_getallstudents,用于获取学生表students的所有记录。n代码如下:nUSEjxglnGO8.2存储过程的创建和执行n8.2.2存储过程的创建n例题nIFEXISTS(SELECTnameFROMsysobjectsWHEREname=up_getallstudentsANDtype=p)nDROPPROCEDUREup_getallstudentsnCREATEPROCEDUREup_getallstudent
9、snASSELECT*FROMstudents8.2存储过程的创建和执行n8.2.2存储过程的创建n例题n【例8-2】编写存储过程up_getcountofstudents,用于获取学生表student的记录个数。代码如下:nCREATEPROCEDUREup_getcountofstudentsnASnBEGINnSELECTcount(*)FROMstudentsnEND8.2存储过程的创建和执行n8.2.3存储过程的执行nSQLServer2005中执行存储过程有两种方式。n在工具栏中单击“新建查询新建查询”,然后在右面的查询编辑器界面中输入执行存储过程的T-SQL代码,单击工具栏中的“
10、执行执行”按钮。8.2存储过程的创建和执行n8.2.3存储过程的执行nSQLServer2005中执行存储过程有两种方式。n在对象资源管理器中,找到要执行的存储过程,右击该存储过程,选择“执行存储过程执行存储过程”,若无参数,则会直接执行。若有参数,会打开一个“执行过程执行过程”窗口。在该窗口的相应表格中,输入各个参数的值,然后单击“确定确定”按钮,即可执行。8.2存储过程的创建和执行n8.2.3存储过程的执行nSQLServer2005中执行存储过程有两种方式。n在Managestudio的工具栏中单击“新建新建查询查询”,然后在右面的查询编辑器界面中输入执行存储过程的T-SQL代码,单击工
11、具栏中的“执行执行”按钮。8.2存储过程的创建和执行n8.2.3存储过程的执行nExecute语句的语法nExecute可以用来执行系统存储过程、用户自定义存储过程或扩展存储过程等。在执行存储过程时,若语句是批处理中的第一条语句,可以省略Execute。Execute的语法如下:8.2存储过程的创建和执行n8.2.3存储过程的执行nExecute语句的语法nEXEC|EXECUTEreturn_status=nprocedure_name;numbern|procedure_name_varparmater=nvalue|variableOUTPUTDEFAULTn,nwithrecompil
12、e;8.2存储过程的创建和执行n8.2.3存储过程的执行nExecute语句的参数含义nreturn_status:可选的整型变量,用于保存存储过程的返回状态。nprocedure_name:调用存储过程的完全或不完全名称。8.2存储过程的创建和执行n8.2.3存储过程的执行nExecute语句的参数含义nnumber:可选的整数,用来对同名的存储过程进行分组。nprocedure_name_var:局部定义变量名,代表存储过程名称。nparameter:过程参数,在createprocedure语句中定义。8.2存储过程的创建和执行n8.2.3存储过程的执行nExecute语句的参数含义nv
13、alue:过程中参数的值。nvariable:用来保存参数或返回参数的变量。noutput:指定存储过程必须返回一个参数。ndefault:根据过程定义,提供参数的默认值。nwithrecompile:指定在执行存储过程是重新编译执行计划。8.2存储过程的创建和执行n8.2.3存储过程的执行n【例8-3】使用execute执行存储过程up_getallstudents。n首先打开managementstudio,在新建的查询编辑器窗口中输入代码:nEXECup_getallstudentsn点击“执行”按钮即可8.2存储过程的创建和执行n8.2.4带有参数的存储过程n存储过程可以带参数。通过参
14、数,存储过程可以接受参数,并把它们传递给过程中的语句,另外,数据也可以通过输出参数从存储过程返回。n创建带参数的存储过程首先要在存储过程中声明该参数。参数名以开始,遵循标识符规则,并且这些参数必须是Transcat-SQL的合法数据类型。当用户不提供该参数值时可以使用默认值来代替。8.2存储过程的创建和执行n1不带默认值的参数不带默认值的参数n【例8-5】编写一个存储过程up_insertstudent,完成学生表students数据的插入。nCREATEPROCEDUREup_insertstudentnsidvarchar(15),snamevarchar(30),nssexchar(10
15、),sbirthdatetime,saddressvarchar(300),semailvarchar(50),smobilephonevarchar(50),shomephonevarchar(50)8.2存储过程的创建和执行n1不带默认值的参数不带默认值的参数nASBEGINnINSERTINTOjxgl.dbo.studentsn(stu_id,stu_name,stu_sex,stu_birthn,Stu_address,stu_email,stu_mobilephone,stu_homephone)VALUESn(sid,sname,ssex,sbirth,saddress,sema
16、il,smobilephone,shomephone)nEND8.2存储过程的创建和执行n1不带默认值的参数不带默认值的参数n执行过程的代码如下:nUSEtestnGOnEXECup_insertstudent09,肖玉峰,男,1975-02-25,山东省滕州市木石镇,13073258271,33467598.2存储过程的创建和执行n1不带默认值的参数不带默认值的参数n【例8-6】编写存储过程up_delStudentByName,根据输入的学生姓名,删除该学生记录。nCREATEPROCEDUREup_delStudentByNamensnamevarchar(30)ASnBEGINnDEL
17、ETEFROMjxgl.dbo.StudentnWHEREstu_name=snamenEND8.2存储过程的创建和执行n1不带默认值的参数不带默认值的参数n【例8-6】编写存储过程up_delStudentByName,根据输入的学生姓名,删除该学生记录。n调用存储过程的代码如下:nUSEjxglnGOnEXECup_delstudentbyname马啸天8.2存储过程的创建和执行n1不带默认值的参数不带默认值的参数n【例8-7】编写一个存储过程up_getStudentInformationByName,根据输入的学生姓名,显示该学生的学号、姓名、课程名和成绩。nCREATEPROCEDU
18、REup_getStudentInformationByNamensnamevarchar(30)-参数定义nASnBEGIN8.2存储过程的创建和执行n1不带默认值的参数不带默认值的参数n【例8-7】编写一个存储过程up_getStudentInformationByName,根据输入的学生姓名,显示该学生的学号、姓名、课程名和成绩。nSELECTs.stu_id,stu_name,cour_name,scoreFROMstudentss,coursesc,course_scorecsnWHEREs.stu_id=cs.stu_idANDncs.cour_id=c.cour_idANDstu
19、_name=snamenEND8.2存储过程的创建和执行n1不带默认值的参数不带默认值的参数n【例8-7】编写一个存储过程up_getStudentInformationByName,根据输入的学生姓名,显示该学生的学号、姓名、课程名和成绩。n调用存储过程的代码如下:nUSEjxglnGOnEXECup_getStudentInformationByName陈琛军8.2存储过程的创建和执行n2带默认值的参数带默认值的参数n【例8-8】编写一个存储过程up_insertstudentwithdefault,给参数定义默认值,完成学生表students数据的插入。nCREATEPROCEDUREd
20、bo.up_insertstudentwithdefaultnsidvarchar(15),snamevarchar(30),-参数定义nssexchar(10)=男,sbirthdatetime,saddressvarchar(300)=,semailvarchar(50)=,smobilephonenvarchar(50)=,shomephonevarchar(50)=nAS8.2存储过程的创建和执行n2带默认值的参数带默认值的参数nBEGINnINSERTINTOjxgl.dbo.studentsn(stu_id,stu_name,stu_sex,stu_birthn,Stu_addre
21、ss,stu_email,stu_mobilephone,stu_homephone)nVALUES(sid,sname,ssex,sbirth,saddress,semail,nsmobilephone,shomephone)nEND8.2存储过程的创建和执行n2带默认值的参数带默认值的参数n调用存储过程的代码如下:nUSEjxglnGonEXECup_insertstudentwithdefaultsid=11,sname=赵小乐,sbirth=1976-07-058.2存储过程的创建和执行n3带输出参数带输出参数n【例8-9】编写一个存储过程up_getAvgScoreByName,根据
22、给定的学生姓名,获取该生的平均成绩。nCREATEPROCEDUREdbo.up_getAvgScoreByNamenanamevarchar(30),navgScoreintoutput-参数定义nAS8.2存储过程的创建和执行n3带输出参数带输出参数nBEGINnSELECTavgScore=avg(score)FROMstudentss,course_scorecsWHEREns.stu_id=cs.stu_idands.stu_name=anamenEND8.2存储过程的创建和执行n3带输出参数带输出参数n调用过程代码如下:nUSEjxglnGOnDECLAREavgScoreintn
23、EXECup_getAvgScoreByName陈琛军,avgScoreoutputnPRINTavgScorenEND8.2存储过程的创建和执行n4带返回值的存储过程带返回值的存储过程nprint语句:Print接受字符串表达式。其语法格式如下:nPRINTanyASCIItext|local_variable|function|string_exprn参数说明:nanyASCIItext:文本字符串nlocal_variable:字符串类型的局部变量nfunction:返回结果为char或varchar类型数据的函数nString_expr:返回字符串的表达式:8.2存储过程的创建和执行n
24、4带返回值的存储过程带返回值的存储过程n【例8-10】编写一个存储过程up_insertstudent2,在插入学生数据前,先判断一下学号是否存在,如果存在,输出“学号已经存在”的消息,否则,插入该学生数据,并返回“数据插入成功”的消息。nCREATEPROCEDUREdbo.up_insertstudent2nsidvarchar(15),snamevarchar(30),-参数定义nssexchar(10)=男,sbirthdatetime,saddressvarchar(300)=,8.2存储过程的创建和执行n4带返回值的存储过程带返回值的存储过程nsemailvarchar(50)=,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 精品 存储 过程 ppt 课件
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内