第七章存储过程.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第七章存储过程

第七章 过程式数据库对象 7.1 存储过程 存储过程的创建格式: 格式: create procedure 存储过程名称([参数列表]) [begin] 存储过程中执行的命令序列; [end] 结束符 参数的定义(参数可有可无,但小括号必须要),包括三部分: 输入|输出模式 in 输入型参数(默认),从外部调用环境将值输入到存储过程内部,传递的方向:实参值-(形参变量 out 输出型参数,从存储过程输出值到外部调用环境的变量,传递的方向:形参变量-(实参变量 in|out 输入|输出型参数,从外部调用环境将值输入到存储过程内部,对数据进行处理,然后将新的结果再由存储过程输出到外部调用环境的变量,传递的方向:实参变量-(形参变量-(实参变量 参数名称 数据类型 例如: create procedure addValue1(in oper1 int,in oper2 int,out sum int)…… create procedure swapValue(inout oper1 int,inout oper2 int)…… 结束符的定义: 结束符定义的原因:因为在mySQL环境中 默认使用分号 作为结束符号,而每条语句输入完成后也是使用分号作为结束标记的。因此在定义存储过程的内部,如果需要写入多条语句,那么在第一条语句结束写 分号 的时候,整个存储过程的定义也就被结束了,因此,需要为mySQL环境定义额外的结束符作为结束标记。 结束符定义的格式: delimiter 结束符号 结束符的使用: 在存储过程内部(即begin end之间)仍然使用 分号 作为语句的结束标志。 在存储过程定义结束后(即 end 的后面) 需要使用自己定义的结束符作为整个存储过程定义结束的标志。 在存储过程中处理2条以上命令的时候,应该加上begin...end,如果只包含1条语句,可以省略begin...end关键字。 例如: create procedure pro1() set @a=100; $ create procedure pro2() begin set @a=100; set @b=1000; end; $ 简单存储过程的例题 不执行任何操作的存储过程 delimiter ! create procedure pro3() begin end! 存储过程的执行:call 存储过程名称([实参列表]); 在别的数据库语言中这样做是不允许的。因为它们要求begin 和 end 之间至少存在一条语句。如下面的代码: create procedure pro4() begin null; end! 使用null关键字表示不执行任何操作,但是这样做在MySQL中是不允许的。 查看错误信息 show errors 存储过程中的注释符号: 单行注释符 -- 该注释符需要注意:注释符和注释的内容之间要 有空格,否则语法错误 # 该注释符和注释的内容之间的空格可有可无 多行注释符 /*……*/ 例题: create procedure pro5() begin set @a=100; -- 定义一个用户变量@a set @b=1000;#定义一个用户变量@b set @c=1000;/*定义一个 用户变量@c*/ end; $ 局部变量的定义和使用 局部变量的概念:在存储过程内部声明的变量,称为局部变量,这样的变量只能局限于存储过程内部使用。该变量不同于前面学的用户变量。 局部变量的定义: 在begin…end之间进行定义。 使用declare关键字进行定义,并且定义的同时可以赋值。格式: declare 变量名,[变量2] 数据类型 [default 默认值]; 注意,此处只能使用default设置默认值,不能用等号 必须遵循先定义后使用的原则。 局部变量与用户变量的不同: 命名格式不同:局部变量前面没有@ 使用范围不同:局部变量只能在当前定义它的存储过程内部使用;而用户变量可以在当前的整个会话范围使用,包括存储过程。 用户变量不用事先定义,可以直接赋值使用,而且数据类型是随着赋予它的值而确定的。但局部变量必须先定义后使用,见下面的两个例子。 赋值方式不同,如下面。 分别使用set和select关键字为局部变量和用户变量赋值 首先要注意,为局部变量或用户变量赋值时,不能直接写成 变量名 = 值; 等号 运算符应该 配合set或 select 关键字一起使用。 局部变量的赋值: set 局部变量名=值 set 局部变量名:=值 select值 into 局部变量名 注意:由于局部变量的局限性,所以为局部变量的赋值的这些语句只能在存储过程内部执行。 用户变量的赋值方式

文档评论(0)

didala + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档