香港云主机最佳企业级服务商!

ADSL拨号VPS包含了中国大陆(联通,移动,电信,)

中国香港,国外拨号VPS。

当前位置:云主机 > MYSQL >

电信ADSL拨号VPS
联通ADSL拨号VPS
移动ADSL拨号VPS

MySQL5.0存储过程教程


时间:2020-11-02 13:24 作者:admin



  希望这本书能像内行专家那样与您进行对话,用简单的问题、例子让你学到需要的知识。为了达到这样的目的,我会从每一个细节开始慢慢的为大家建立概念,最后会给大家展示较大的实用例,在学习之前也许大家会认为这个用例很难,但是只要跟着课程去学,相信很快就能掌握。
ConventionsandStyles约定和编程风格
  每次我想要演示实际代码时,我会对mysql/' target='_blank'>mysql客户端的屏幕就出现的代码进行调整,将字体改成Courier,使他们看起来与普通文本不一样。
  在这里举个例子:MySQL>DROPFUNCTIONf;QueryOK,0rowsaffected(0.00sec)
  如果实例比较大,则需要在某些行和段落间加注释,同时我会用将“
mysql>CREATEPROCEDUREp()
->BEGIN
->/*Thisproceduredoesnothing*/END;//QueryOK,0rowsaffected(0.00sec)
  有时候我会将例子中的"mysql>"和"->"这些系统显示去掉,你可以直接将代码复制到mysql客户端程序中(如果你现在所读的不是电子版的,可以在mysql.com网站下载相关脚本)所以的例子都已经在Suse9.2Linux、Mysql5.0.3公共版上测试通过。
  在您阅读本书的时候,Mysql已经有更高的版本,同时能支持更多OS了,包括Windows,Sparc,HP-UX。因此这里的例子将能正常的运行在您的电脑上。但如果运行仍然出现故障,可以咨询你认识的资深Mysql用户,以得到长久的支持和帮助。
WhyMySQLStatementsareLegalinaProcedureBody
  什么MySQL语句在存储过程体中是合法的?
  什么样的SQL语句在Mysql存储过程中才是合法的呢?你可以创建一个包含INSERT,UPDATE,DELETE,SELECT,DROP,CREATE,REPLACE等的语句。你唯一需要记住的是如果代码中包含MySQL扩充功能,那么代码将不能移植。在标准SQL语句中:任何数据库定义语言都是合法的,如:

CREATEPROCEDUREp()DELETEFROMt;//
  SET、COMMIT以及ROLLBACK也是合法的,如:
CREATEPROCEDUREp()SET@x=5;//
  MySQL的附加功能:任何数据操作语言的语句都将合法。
CREATEPROCEDUREp()DROPTABLEt;//
  MySQL扩充功能:直接的SELECT也是合法的:
CREATEPROCEDUREp()SELECT'a';//
  顺便提一下,我将存储过程中包括DDL语句的功能称为MySQL附加功能的原因是在SQL标准中把这个定义为非核心的,即可选组件。
TheNewSQLStatements新SQL语句
Variables变量
  在复合语句中声明变量的指令是DECLARE。
  (1)ExamplewithtwoDECLAREstatements
  两个DECLARE语句的例子

CREATEPROCEDUREp8()
BEGIN
DECLAREaINT;
DECLAREbINT;
SETa=5;
SETb=5;
INSERTINTOtVALUES(a);
SELECTs1*aFROMtWHEREs1>=b;
END;///*Iwon'tCALLthis*/
  在过程中定义的变量并不是真正的定义,你只是在BEGIN/END块内定义了而已(译注:也就是形参)。
ErrorHandling异常处理
  好了,我们现在要讲的是异常处理
1.SampleProblem:LogOfFailures问题样例:故障记录
  当INSERT失败时,我希望能将其记录在日志文件中我们用来展示出错处理的问题样例是很
普通的。我希望得到错误的记录。当INSERT失败时,我想在另一个文件中记下这些错误的
信息,例如出错时间,出错原因等。我对插入特别感兴趣的原因是它将违反外键关联的约束
2.SampleProblem:LogOfFailures(2)
mysql>CREATETABLEt2
s1INT,PRIMARYKEY(s1))
engine=innodb;//
mysql>CREATETABLEt3(s1INT,KEY(s1),
FOREIGNKEY(s1)REFERENCESt2(s1))
engine=innodb;//
mysql>INSERTINTOt3VALUES(5);//
...
ERROR1216(23000):Cannotaddorupdateachildrow:aforeignkey
constraintfails(这里显示的是系统的出错信息)
  我开始要创建一个主键表,以及一个外键表。我们使用的是InnoDB,因此外键关联检查是打
开的。然后当我向外键表中插入非主键表中的值时,动作将会失败。当然这种条件下可以很
快找到错误号1216。
3.SampleProblem:LogOfFailures

CREATETABLEerror_log(error_message
CHAR(80))//
  下一步就是建立一个在做插入动作出错时存储错误的表。 (责任编辑:admin)






帮助中心
会员注册
找回密码
新闻中心
快捷通道
域名登录面板
虚机登录面板
云主机登录面板
关于我们
关于我们
联系我们
联系方式

售前咨询:17830004266(重庆移动)

企业QQ:383546523

《中华人民共和国工业和信息化部》 编号:ICP备00012341号

Copyright © 2002 -2018 香港云主机 版权所有
声明:香港云主机品牌标志、品牌吉祥物均已注册商标,版权所有,窃用必究

云官方微信

在线客服

  • 企业QQ: 点击这里给我发消息
  • 技术支持:383546523

  • 公司总台电话:17830004266(重庆移动)
  • 售前咨询热线:17830004266(重庆移动)