



下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
存储过程的优点2007-11-0215:21存储过程只在创造时进行编译即可,以后每次执行存储过程都不需再重新编译,而我们通常使用的SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。经常会遇到复杂的业务逻辑和对数据库的操作,这个时候就会用SP来封装数据库操作。当对数据库进行复杂操作时(如对多个表进行Update,Insert,Query,Delete时),可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用。可以极大的提高数据库的使用效率,减少程序的执行时间,这一点在较大数据量的数据库的操作中是非常重要的。在代码上看,SQL语句和程序代码语句的分离,可以提高程序代码的可读性。存储过程可以设置参数,可以根据传入参数的不同重复使用同一个存储过程,从而高效的提高代码的优化率和可读性。安全性高,可设定只有某此用户才具有对指定存储过程的使用权存储过程的种类:(1) 系统存储过程:以sp_开头,用来进行系统的各项设定.取得信息.相关管理工作,如sp_help就是取得指定对象的相关信息。(2) 扩展存储过程以XP_开头,用来调用操作系统提供的功能execmaster..xp_cmdshell'ping10.8.16.1'(3) 用户自定义的存储过程,这是我们所指的存储过程常用格式模版:Createprocedureprocedue_name[©parameterdata_type][output][with]{recompile|encryption}assql_statement解释:output:表示此参数是可传回的with(recompile|encryption}recompile:表示每次执行此存储过程时都重新编译一次[encryption:所创建的存储过程的内容会被加密。SQL存储过程实例2007-11-0215:24实例1:只返回单一记录集的存储过程。表银行存款表(bankMoney)的内容如下IduserIDSexMoney001Zhangsan男30002Wangwu男50003Zhangsan男40要求1:查询表bankMoney的内容的存储过程createproceduresp_query_bankMoneyasselect*frombankMoneygoexecsp_query_bankMoney注*在使用过程中只需要把中的SQL语句替换为存储过程名,就可以了很方便吧!实例2(向存储过程中传递参数):加入一笔记录到表bankMoney,并查询此表中userID=Zhangsan的所有存款的总金额。Createprocinsert_bank@param1char(10),@param2varchar(20),@param3varchar(20),@param4int,@param5intoutputwithencryption 加密asinsertbankMoney(id,userID,sex,Money)Values(@param1,@param2,@param3,@param4)select@param5=sum(Money)frombankMoneywhereuserID='Zhangsan'go在SQLServer查询分析器中执行该存储过程的方法是:declare@total_priceintexecinsert_bank'004','Zhangsan','男',100,@total_priceoutputprint'总余额为'+convert(varchar,@total_price)go在这里再啰嗦一下存储过程的3种传回值(方便正在看这个例子的朋友不用再去查看语法内容):以Return传回整数以output格式传回参数Recordset传回值的区别:output和return都可在批次程式中用变量接收,而recordset则传回到执行批次的客户端中。实例3:使用带有复杂SELECT语句的简单过程下面的存储过程从四个表的联接中返回所有作者(提供了姓名)、出版的书籍以及出版社。该存储过程不使用任何参数。USEpubsIFEXISTS(SELECTnameFROMsysobjectsWHEREname='au_info_all'ANDtype='P')DROPPROCEDUREau_info_allGOCREATEPROCEDUREau_info_allASSELECTau_lname,au_fname,title,pub_nameFROMauthorsaINNERJOINtitleauthortaONa.au_id=ta.au_idINNERJOINtitlestONt.title_id=ta.title_idINNERJOINpublisherspONt.pub_id=p.pub_idGOau_info_all存储过程可以通过以下方法执行:EXECUTEau_info_all—OrEXECau_info_all如果该过程是批处理中的第一条语句,则可使用:au_info_all实例4:使用带有参数的简单过程CREATEPROCEDUREau_info@lastnamevarchar(40),@firstnamevarchar(20)ASSELECTau_lname,au_fname,title,pub_nameFROMauthorsaINNERJOINtitleauthortaONa.au_id=ta.au_idINNERJOINtitlestONt.title_id=ta.title_idINNERJOINpublisherspONt.pub_id=p.pub_idWHEREau_fname=@firstnameANDau_lname=@lastnameGOau_info存储过程可以通过以下方法执行:EXECUTEau_info'Dull','Ann'—OrEXECUTEau_info@lastname='Dull',@firstname='Ann'—OrEXECUTEau_info@firstname='Ann',@lastname='Dull'—OrEXECau_info'Dull','Ann'—OrEXECau_info@lastname='Dull',@firstname='Ann'—OrEXECau_info@firstname='Ann',@lastname='Dull'如果该过程是批处理中的第一条语句,则可使用:au_info'Dull','Ann'—Orau_info@lastname='Dull',@firstname='Ann'—Orau_info@firstname='Ann',@lastname='Dull'实例5:使用带有通配符参数的简单过程CREATEPROCEDUREau_info2@lastnamevarchar(30)='D%',@firstnamevarchar(18)='%'ASSELECTau_lname,au_fname,title,pub_nameFROMauthorsaINNERJOINtitleauthortaONa.au_id=ta.au_idINNERJOINtitlestONt.title_id=ta.title_idINNERJOINpublisherspONt.pub_id=p.pub_idWHEREau_fnameLIKE@firstnameANDau_lnameLIKE@lastnameGOau_info2存储过程可以用多种组合执行。下面只列出了部分组合:EXECUTE
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公寓代理销售合同范本
- 冰淇淋套餐合同范本
- 出售文明公寓合同范本
- 中药加工合同范本
- 公寓阁楼买卖合同范本
- cps推广合同范本
- 农户斗鸡养殖合同范本
- 事业物业合同范本
- 住家阿姨用工合同范本
- 与单位停车合同范例
- 10我们所了解的环境污染 (教学设计)2023-2024学年统编版道德与法治四年级上册
- 2025中国烟草/中烟工业招聘易考易错模拟试题(共500题)试卷后附参考答案
- 新教科版小学科学三年级下册教案(全册)
- 2025小学语文一年级下册第二单元教学课件汇编(配套新教材)
- 天津2025年天津中德应用技术大学辅导员岗位招聘7人笔试历年参考题库附带答案详解
- 2025年湘西民族职业技术学院高职单招职业技能测试近5年常考版参考题库含答案解析
- 2025年海南职业技术学院高职单招语文2018-2024历年参考题库频考点含答案解析
- 北京市西城区2024-2025学年高三上学期期末考试语文试题(解析版)
- 2025年春新人教版数学一年级下册课件 第六单元 数量间的加减关系 第2课时 求比1个数多(少)几的数
- 语文课堂中的多媒体教学方法研究
- 民用无人机操控员执照(CAAC)考试复习重点题库500题(含答案)
评论
0/150
提交评论