• 浙产纸尿裤能叫板国际大牌吗 2019-03-19
  • 关闭

    关闭

    关闭

    封号提示

    内容

    北京pk10是国家彩票吗 SQL第9章存储过程

    玩pk10死的很惨:SQL第9章存储过程.ppt

    SQL第9章存储过程

    教育文库
    2019-01-07 0人阅读 0 0 0 暂无简介 举报

    北京pk10是国家彩票吗 www.qdpo.net 简介:本文档为《SQL第9章存储过程ppt》,可适用于高等教育领域

    第章存储过程存储过程概创建管理简单存储过创建管理带参的存储过其他存储过存储过程概述存储过程概念存储过程是为了实现某个特定任务由一组预先编译好的SQL语句组成将其放在服务器上由用户通过指定存储过程的名字来执行的一种数据库对象。存储过程类型系统存储过程扩展存储过程用户自定义存储过程系统存储过程存储以SP为前缀,是由SQLServer自己创建、管理和使用的一种特殊的存储过程不能对其进行修改或删除。如Sphelpdb、Sprenamedb等。由用户自行创建的存储过程可以输入参数、向客户端返回表格或结果、消息等也可以返回输出函数。第章存储过程存储过程概述创建管理简单存储过程创建管理带参的存储过程其他存储过程创建管理简单的存储过程无参存储过程的创建无参存储过程的执行查看存储过程修改存储过程编译存储过程删除存储过程无参存储过程的创建使用SQL语句创建存储过程)语法格式如下:CREATEPROCEDUREprocedurenameASsqlstatementn)语法注释:procedurename:新建存储过程的名称其名称必须符合标识符命名规则且对于数据库及其所有者必须唯一。sqlstatement:指存储过程中的任意数目和类型的TransactSQL语句。无参存储过程的创建例:在PUBS数据库中创建一个名称为prsearchorddate的存储过程该存储过程将查询出sales表中订购日期orddate在年以后的记录信息。代码如下:CREATEPROCprsearchorddateASSELECT*FROMsalesWHEREorddate>=''GO创建存储过程的注意事项只能在当前数据库中创建存储过程。数据库的所有者可以创建存储过程也可以授权其他用户创建存储过程。存储过程是数据库对象其名称必须遵守标识符命名规则。不能将CREATEPROCEDURE语句与其它SQL语句组合到单个批处理中。创建存储过程时应指定所有输入参数和向调用过程或批处理返回的输出参数、执行数据库操作的编程语句和返回至调用过程或批处理以表明成功或失败的状态值。创建管理简单的存储过程无参存储过程的创建无参存储过程的执行查看存储过程修改存储过程编译存储过程删除存储过程无参存储过程的执行对存储在服务器上的存储过程可以使用EXECUTE命令或其名称执行它其语法格式如下:EXECUTEprocedurename对上例的存储过程prsearchorddate的执行语句如下:EXECUTEprsearchorddate创建管理简单的存储过程无参存储过程的创建无参存储过程的执行查看存储过程修改存储过程编译存储过程删除存储过程查看存储过程使用对象资源管理器查看存储过程使用系统存储过程查看存储过程信息在SQLServer中可以使用sphelptext、spdepends、sphelp等系统存储过程来查看存储过程的不同信息。)使用sphelptext查看存储过程的文本信息其语法格式为:sphelptext存储过程名)使用spdepends查看存储过程的相关性其语法格式为:spdepends存储过程名)使用sphelp查看存储过程的一般信息其语法格式为:sphelp存储过程名创建管理简单的存储过程无参存储过程的创建无参存储过程的执行查看存储过程修改存储过程编译存储过程删除存储过程修改存储过程修改存储过程语法格式为:ALTERPROCDUREprocedurename{parameterdatatype}=defaultOUTPUT,…nWITH{RECOMPILE|ENCRYPTION|RECOMPILE,ENCRYPTION}ASSqlstatement修改存储过程例:修改存储过程prsearchempl,查询出authors表中state字段为某个州的员工信息。其程序清单如下:ALTERPROCprsearchemplstatechar()AsSelect*FromauthorsWherestate=stateGO创建管理简单的存储过程无参存储过程的创建无参存储过程的执行查看存储过程修改存储过程编译存储过程删除存储过程编译存储过程在我们使用了一次存储过程后可能会因为某些原因必须向表中新增加数据列或者为表新添加索引从而改变了数据库的逻辑结构。这时需要对存储过程进行重新编译SQLServer提供三种重新编译存储过程的方法:、在建立存储过程时设定重新编译语法格式:CREATEPROCEDUREprocedurenameWITHRECOMPILEASsqlstatement、在执行存储过程时设定重编译语法格式:EXECUTEprocedurenameWITHRECOMPILE、通过使用系统存储过程设定重编译语法格式为:EXECsprecompileOBJECT创建管理简单的存储过程无参存储过程的创建无参存储过程的执行查看存储过程修改存储过程编译存储过程删除存储过程删除存储过程使用SSMS对象资源管理器删除存储过程使用DROPPROCEDURE语句删除存储过程DROPPROCEDURE语句可以一次从当前数据库中将一个或多个存储过程或过程组删除其语法格式如下:DROPPROCEDURE存储过程名称,n例:删除存储过程prsearchemplUSEPUBSGODROPPROCEDUREprsearchemplGO删除存储过程例:建立一个带参的存储过程用于删除PUBS数据库sales表中storid为某某值(如‘’)的所有记录。实现的TSQL语句:USEpubsGOCREATEPROCdeletesalesstoridchar()ASDELETEsalesWHEREstorid=storidGO删除存储过程存储过程的执行如下:Execdeletesales‘’GO第章存储过程存储过程概述创建管理简单存储过程创建管理带参的存储过程其他存储过程创建管理带参的存储过程创建带参存储过程的语法创建执行带输入参数的存储过程创建执行带输出参数的存储过程存储过程的返回值创建带参存储过程的语法)语法格式如下:CREATEPROCDUREprocedurename{parameterdatatype}=defaultOUTPUT,…nWITH{RECOMPILE|ENCRYPTION|RECOMPILE,ENCRYPTION}ASSqlstatement创建带参存储过程的语法)语法注释:parameter:存储过程中的输入和输出参数。datatype:参数的数据类型。OUTPUT:表明参数是返回参数。该选项的值可以返回给EXECUTE。创建管理带参的存储过程创建带参存储过程的语法创建执行带输入参数的存储过程创建执行带输出参数的存储过程存储过程的返回值创建执行带输入参数的存储过程例:在PUBS数据库中创建一个存储过程prsearchempl,查询出authors表中state字段为某个州且姓中包含某字符串的所有的员工信息。CREATEPROCprsearchemplstatechar(),strvarchar()AsSelect*FromauthorsWherestate=stateandaulnamelike‘’str’’创建执行带输入参数的存储过程语法格式如下:EXECUTE{returnstatus={procedurename}parameter={value|variableOUTPUT|DEFAULT,nWITHRECOMPILE对上例的存储过程prsearchempl的执行语句如下:EXECUTEprsearchempl‘CA’,’hi’创建执行带输入参数的存储过程例:查询出northwind数据库中城市值为某某值并且雇佣时间在某某日期之后的所有员工的基本信息。实现的TSQL语句:USEnorthwindGOCREATEPROCpgetEmployeecitynvarchar(),hiredatedatetimeASSELECT*FROMemployeesWHEREcity=cityANDhiredate>=hiredateGO创建执行带输入参数的存储过程执行带输入参数的存储过程按位置传递参数值在执行存储过程的语句中直接给出参数的值。当有多个参数时给出的参数的顺序与创建执行存储过程的语句中的参数的顺序一致即参数传递的顺序就是参数定义的顺序。通过参数名传递参数值在执行存储过程的语句中使用【参数名=参数值】的形式给出参数值。其优点是参数可以以任意顺序给出。创建执行带输入参数的存储过程在输入参数中使用默认值在执行存储过程pgetEmployee时如果没有指定参数则系统运行就会出错此时如果希望在执行时不给出参数也能正确运行则在创建存储过程时给输入参数指定默认值。创建执行带输入参数的存储过程按位置传递参数值EXECpgetEmployee‘london’,’’通过参数名传递参数值EXECpgetEmployeecity='london',hiredate=''或EXECpgetEmployeehiredate='',city='london'创建执行带输入参数的存储过程例:对存储过程pgetEmployee进行修改指定城市默认值为‘london’指定雇佣日期为年月日。USEnorthwindGOALTERPROCpgetEmployeecitynvarchar()=’london’,hiredatedatetime=’’ASSELECT*FROMemployeesWHEREcity=cityANDhiredate>=hiredateGOEXECpgetEmployee创建管理带参的存储过程创建带参存储过程的语法创建执行带输入参数的存储过程创建执行带输出参数的存储过程存储过程的返回值创建执行带输出参数的存储过程例:在PUBS数据库中创建一个存储过程prtitleprice,统计出titles表中pubid字段为某编号的书籍总价格。CREATEPROCprtitlepricepubidchar(),spricemoneyoutputAsSelectsprice=sum(price)FromtitlesWherepubid=pubid存储过程的执行:declaressmoneyexecprtitleprice'',ssoutputselectssas总价格创建执行带输出参数的存储过程例:创建一个存储过程pgetCountEmployees用于统计nothwind数据库员工表中雇佣日期在某某时间之后的员工的个数。实现的TSQL语句:USEnorthwindGOCREATEPROCpgetCountEmployeeshiredatedatetime=’’,countintOUTPUTASSELECTcount=count(*)FROMemployeesWHEREhiredate>=hiredateGO创建执行带输出参数的存储过程调用存储过程的TSQL语句:DECLAREecountintEXECpgetCountEmployees'',ecountOUTPUTSELECT'员工个数为:'str(ecount)GO创建管理带参的存储过程创建带参存储过程的语法创建执行带输入参数的存储过程创建执行带输出参数的存储过程存储过程的返回值存储过程的返回值存储过程在执行后都会返回一个整型值。如果执行成功则返回否则返回到之间的随机数也可以使用RETURN语句来指定一个存储过程的返回值。存储过程的返回值例:在northwind数据库创建一个存储过程返回产品表中的所有产品的库存量。createprocprlierasbegindeclarefanhuizhiintselectfanhuizhi=sum(unitsinstock)fromproductsreturnfanhuizhiend存储过程的返回值接受这个返回值必须要用变量来接收declarejieshouzhiintexecjieshouzhi=prlierprintjieshouzhi存储过程的返回值上例中返回的值也可以用output参数来返回可以将上例的存储过程改写为:createprocprlierfanhuizhiintoutputasbeginselectfanhuizhi=sum(unitsinstock)fromproductsend存储过程的返回值接收output的返回值也必须要用变量如:declarejieshouzhiintexecprlierjieshouzhioutputprintjieshouzhi注意:)return返回的是整数output可以返回任何数据。)如果让return返回非整数值在创建存储过程时不会出错但是运行存储过程时将会出错。存储过程案例例:在PUBS数据库中创建一个用户表UserMember并在此表中录入相应记录用户表的表结构如下所示:存储过程案例例:在PUBS数据库中创建一个带参数的存储过程SelectUser查询出用户表UserMember中是否存在某用户如果不存在则返回值为否则则查询该用户的密码是否正确如不正确则返回值为否则返回值为。存储过程案例createprocselectuserusernamevarchar(),passvarchar()asifusernamenotin(select用户名fromusermember)return()elseifexists(select*fromusermemberwhere用户名=usernameand密码=pass)return()elsereturn()存储过程案例执行存储过程语句如下:DeclarefanintExecfan=selectuser‘aaa’,’aaa’Iffan=Print‘用户名和密码都正确’Iffan=Print‘用户名不存在’Iffan=Print‘用户名存在密码不正确’课堂练习在学生数据库中创建一个学生用户表StudentMember并在此表中录入相应记录。在学生数据库中创建一个带参数的存储过程SelectStudent查询出学生用户表StudentMember中是否存在某学生的信息如果不存在则返回值为否则则查询该学生的登录密码是否正确如不正确则返回值为否则返回值为。存储过程案例例:建立一个带参的存储过程用于向PUBS数据库中的publishers表中添加一条记录在添加记录前先查看是否存在此出版社编号(pubid)如不存在则插入该条记录信息存储过程返回值为如已存在此出版社编号则不进行插入记录操作存储过程返回值为。测试记录为:‘’’清华大学出版社’’北京’,’中国’。存储过程案例实现的TSQL语句:USEpubsGOCREATEPROCInsertPublishersPubIdchar(),pubnamevarchar(),cityvarchar(),statechar(),countryvarchar()存储过程案例ASIFEXISTS(SELECT*FROMpublishersWHEREpubid=pubid)ReturnELSEBEGININSERTPublishers(PubId,pubname,city,state,country)VALUES(PubId,pubname,city,state,country)IFERROR=RETURNELSERETURNENDGO存储过程案例存储过程的执行如下:DECLAREresultintExecresult=InsertPublishers‘’,’清华大学出版社’,’北京’,,’中国’IFresult=PRINT‘记录插入成功’IFresult=PRINT‘出版社编号已存在记录重复!’IFresult=PRINT‘出版社编号违反检查约束请重新输入!’GO存储过程案例例:在PUBS数据库中创建一个带参数的存储过程InsertUserMember接受用户的注册信息首先查询出用户表UserMember中是否存在该用户如果存在则返回值为否则将该信息插入到该表中如果插入记录成功则返回值为否则返回值为。存储过程案例createprocInsertUserMemberusernamevarchar(),pwdvarchar(),sexchar()=’男’,phonevarchar()=,emailvarchar()=,addressvarchar()=asifexists(select*fromusermemberwhere用户名=username)return存储过程案例elsebegininsertintousermembervalues(username,pwd,sex,phone,email,address)iferror=returnelsereturnendgo存储过程案例存储过程的执行语句如下:declarefanintexecfan=InsertUserMember‘cc’,‘cc’,default,‘’,‘acom’,‘长春'iffan=print'用户名已经存在'iffan=print'插入数据成功'iffan=print'插入数据失败'课堂练习在学生数据库中创建一个带参数的存储过程InsertStudent接受学生的注册信息首先查询出学生用户表StudentMember中是否存在该学生如果存在则返回值为否则将该信息插入到该表中如果插入记录成功则返回值为否则返回值为。存储过程案例例:建立一个带参的存储过程updatesales用于修改PUBS数据库sales表中orddate的值为某某(如’’)并且titleid为某某值(如‘BU’)的qty字段值修改其值为输入的数值(如)。存储过程案例USEpubsGOCREATEPROCupdatesalesorddatedatetime,titleidvarchar(),qtysmallintASUPDATEsalesSETqty=qtyWHEREorddate=orddateANDtitleid=titleidGO存储过程的执行如下:Execupdatesales‘’’BU’,GO存储过程案例例:在pubs数据库中创建一个带参的存储过程updateusermember接受用户的信息修改首先查询出用户表usermemeber中是否存在该用户名,并且密码是否正确如果不正确则返回()否则可以修改用户的信息(用户名不可以修改)。存储过程案例Createprocupdateusermemberusernamevarchar(),pwdvarchar(),sexchar(),telephonevarchar(),addressvarchar()asIfexists(select*fromusermemberwhere用户名=usernameand密码=pwd)UpdateusermemberSet性别=sex,电话=telephone,家庭住址=addressWhere用户名=usernameElsereturn()Go执行存储过程Execupdateusermember‘yp’,’’,’女’‘’,’beijing’课堂练习在学生数据库中创建一个带参数的存储过程UpdateStudent接受学生的信息修改首先查询出学生用户表StudentMember中是否存在该学号并且密码是否正确如果不正确则返回值为否则修改该学生的其他信息(学号不可以修改)。综合练习例:建立一个带参的存储过程pgetTotal用于查询northwind数据库orderdetails表中某产品的总销量和总销售金额,并将其值返回。实现的TSQL语句:USEnorthwindGOCREATEPROCpgetTotalprodidint,totalquantityINTOUTPUT,totalmoneymoneyOUTPUTASSELECTtotalquantity=sum(quantity),totalmoney=sum(quantity*unitprice*(discount))FROMorderdetailsWHEREproductid=prodidGO综合练习存储过程的执行如下:DECLAREtquantityint,tmoneymoneyEXECpgetTotal,tquantityoutput,tmoneyoutputPRINT'该产品总销量为'str(tquantity)PRINT'该产品总金额为'str(tmoney)GO第章存储过程存储过程概述创建管理简单存储过程创建管理带参的存储过程其他存储过程其他存储过程系统存储过程系统存储过程存储在master数据库中并以sp为前缀主要用来从系统表中获取信息为系统管理员管理SQLServer提供帮助为用户查看数据库对象提供方便。比如用来查看数据库对象信息的系统存储过程sphelp、显示存储过程和其它对象的文本的存储过程phelptext等。其他存储过程扩展存储过程:扩展存储过程以xp为前缀它是关系数据库引擎的开放式数据服务层的一部分其可以使用户在动态链接库(DLL)文件所包含的函数中实现逻辑从而扩展了TransactSQL的功能并且可以象调用TransactSQL过程那样从TransactSQL语句调用这些函数。小结掌握、掌握存储过程的创建和执行过程、掌握存储过程的输入和输出参数的应用、掌握管理存储过程的方法。理解理解存储过程的概念谢谢!

    用户评价(0)

    关闭

    新课改视野下建构高中语文教学实验成果报告(32KB)

    抱歉,积分不足下载失败,请稍后再试!

    提示

    试读已结束,如需要继续阅读或者下载,敬请购买!

    评分:

    /68

    ¥20.0

    立即购买

    意见
    反馈

    立即扫码关注

    爱问共享资料微信公众号

    北京pk10是国家彩票吗

    举报
    资料

  • 浙产纸尿裤能叫板国际大牌吗 2019-03-19