MySQL存储过程详解

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

Copyright2005,MySQLAB第1页如有错误请来信chenpengyi_007@163.com,谢谢您的支持和阅读,同时感谢您对MySQL事业的关注请转载时保留这些信息MySQL5.0存储过程存储过程存储过程存储过程MySQL5.0新特性系列第一部分MySQL技术白皮书技术白皮书技术白皮书技术白皮书PeterGulutzanMarch,2005翻译:陈朋奕西安电子科技大学2005-5-6(声明:属于个人翻译,不涉及任何商业目的,支持国内MySQL发展,请转载时注明出处,谢谢)Copyright2005,MySQLAB第2页如有错误请来信chenpengyi_007@163.com,谢谢您的支持和阅读,同时感谢您对MySQL事业的关注请转载时保留这些信息TableofContents目录目录目录目录(目录不做翻译了,因为基本都是专有名词)Introduction....................................................................................................3ADefinitionandanExample........................................................................3WhyStoredProcedures................................................................................4WhyMySQLStatementsareLegalinaProcedureBody...........................8CharacteristicsClauses..............................................................................10Parameters....................................................................................................13TheNewSQLStatements...........................................................................15Scope...........................................................................................................16Loops.............................................................................................................21ErrorHandling..............................................................................................29Cursors.........................................................................................................35Security.........................................................................................................41Functions......................................................................................................43Metadata........................................................................................................44Details...........................................................................................................48Style...............................................................................................................52Tipswhenwritinglongroutines.................................................................63Bugs..............................................................................................................64FeatureRequests.........................................................................................65Resources.....................................................................................................65Conclusion....................................................................................................66AboutMySQL...............................................................................................66Copyright2005,MySQLAB第3页如有错误请来信chenpengyi_007@163.com,谢谢您的支持和阅读,同时感谢您对MySQL事业的关注请转载时保留这些信息Introduction本书是为需要了解5.0版本新特性的MySQL老用户而写的。简单的来说是介绍了“存储过程、触发器、视图、信息架构视图”,这是介绍MySQL5.0新特性丛书的第一集。希望这本书能像内行专家那样与您进行对话,用简单的问题、例子让你学到需要的知识。为了达到这样的目的,我会从每一个细节开始慢慢的为大家建立概念,最后会给大家展示较大的实用用例,在学习之前也许大家会认为这个用例很难,但是只要跟着课程去学,相信很快就能掌握。ConventionsandStyles约定和编程风格约定和编程风格约定和编程风格约定和编程风格每次我想要演示实际代码时,我会对mysql客户端的屏幕就出现的代码进行调整,将字体改成Courier,使他们看起来与普通文本不一样。在这里举个例子:mysqlDROPFUNCTIONf;QueryOK,0rowsaffected(0.00sec)如果实例比较大,则需要在某些行和段落间加注释,同时我会用将“--”符号放在页面的右边以表示强调。例如:mysqlCREATEPROCEDUREp()-BEGIN-/*Thisproceduredoesnothing*/---END;//QueryOK,0rowsaffected(0.00sec)有时候我会将例子中的mysql和-这些系统显示去掉,你可以直接将代码复制到mysql客户端程序中(如果你现在所读的不是电子版的,可以在mysql.com网站下载相关脚本)所以的例子都已经在Suse9.2Linux、Mysql5.0.3公共版上测试通过。在您阅读本书的时候,Mysql已经有更高的版本,同时能支持更多OS了,包括Windows,Sparc,HP-UX。因此这里的例子将能正常的运行在您的电脑上。但如果运行仍然出现故障,可以咨询你认识的资深Mysql用户,以得到长久的支持和帮助。ADefinitionandanExample定义及实例定义及实例定义及实例定义及实例存储过程是一种存储在书库库中的程序(就像正规语言里的子程序一样),准确的来说,MySQL支持的“routines(例程)”有两种:一是我们说的存储过程,二是在其他SQL语句中可以返回值的函数(使用起来和Mysql预装载的函数一样,如pi())。我在本书里面会更经常使用存储过程,因为这是我们过去的习惯,相信大家也会接受。Copyright2005,MySQLAB第4页如有错误请来信chenpengyi_007@163.com,谢谢您的支持和阅读,同时感谢您对MySQL事业的关注请转载时保留这些信息一个存储过程包括名字,参数列表,以及可以包括很多SQL语句的SQL语句集。在这里对局部变量,异常处理,循环控制和IF条件句有新的语法定义。下面是一个包括存储过程的实例声明:(译注:为了方便阅读,此后的程序不添任何中文注释)CREATEPROCEDUREprocedure1/*name存储过程名*/(INparameter1INTEGER)/*parameters参数*/BEGIN/*startofblock语句块头*/DECLAREvariable1CHAR(10);/*variables变量声明*/IFparameter1=17THEN/*startofIFIF条件开始*/SETvariable1='birds';/*assignment赋值*/ELSESETvariable1='beasts';/*assignment赋值*/ENDIF;/*endofIFIF结束*/INSERTINTOtable1VALUES(variable1);/*statementSQL语句*/END/*endofblock语句块结束*/下面我将会介绍你可以利用存储过程做的工作的所有细节。同时我们将介绍新的数据库对象——触发器,因为触发器和存储过程的关联是必然的。WhyStoredProcedures为什么要用存储过程为什么要用存储过程为什么要用存储过程为什么要用存储过程由于存储过程对于MySQL来说是新的功能,很自然的在使用时你需要更加注意。毕竟,在此之前没有任何人使用过,也没有很多大量的有经验的用户来带你走他们走过的路。然而你应该开始考虑把现有程序(可能在服务器应用程序中,用户自定义函数(UDF)中,或是脚本中)转移到存储过程中来。这样做不需要原因,你不得不去做。存储过程是已经存储过程是已经存储过程是已经存储过程是已经被认证的技术被认证的技术被认证的技术被认证的技术!!!!虽然在Mysql中它是新的,但是相同功能的函数在其他DBMS中早已存在,而它们的语法往往是相同的。因此你可以从其他人那里获得这些概念,也有很多你可以咨询或者雇用的经验用户,还有许多第三方的文档可供你阅读。存储过程会使系统运行更快存储过程会使系统运行更快存储过程会使系统运行更快存储过程会使系统运行更快!!!!虽然我们暂时不能在Mysql上证明这个优势,用户得到的体验也不一样。我们可以说的就是Mysql服务器在缓存机制上做了改进,就像Preparedstatements(预处理语句)所做的那样。由于没有编译器,因此SQL存储过程不会像外部语言(如C)编写的程序运行起来那么快。但

1 / 59
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功