- 1、本文档共35页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
MySQL开发和 与实践第9章存储过程和 与存储函数.ppt
;;9.1 创建存储过程和存储函数;9.1.1 创建存储过程; 一个存储过程包括名字,参数列表,还可以包括很多SQL语句集。下面创建一个存储过程,其代码如下:
delimiter //
create procedure proc_name (in parameter integer)
begin
declare variable varchar(20);
if parameter=1 then
set variable=MySQL;
else
set variable=’PHP’;
end if;
insert into tb (name) values (variable);
end;
MySQL中存储过程的建立以关键字create procedure开始,后面仅跟存储过程的名称和参数。MySQL的存储过程名称不区分大小写,例如PROCE1()和proce1()代表同一存储过程名。存储过程名或存储函数名不能与MySQL数据库中的内建函数重名。;创建存储函数与创建存储过程大体相同。其创建存储函数的基本形式如下:
CREATE FUNCTION sp_name ([func_parameter[,...]])
RETURNS type
??? [characteristic ...] routine_body
创建存储函数的参数说明如表9-2所示。
表9-2 创建存储函数的参数说明
func_parameter可以由多个参数组成,其中每个参数均由参数名称和参数类型组成,其结构如下:
param_name type
param_name参数是存储函数的函数名称;type参数用于指定存储函数的参数类型。该类型可以是MySQL 数据库所支持的类型。;; MySQL存储过程中的参数主要有局部参数和会话参数两种,这两种参数又可以被称为局部变量和会话变量。局部变量只在定义该局部变量的begin…end范围内有效,会话变量在整个存储过程范围内均有效。
1.局部变量
局部变量以关键字declare声明,后跟变量名和变量类型,例如:
declare a int
当然在声名局部变量时也可以用关键字default为变量指定默认值,例如:
declare a int default 10
下述代码为读者展示如何在MySQL存储过程中定义局部变量以及其使用方法。在该例中,分别在内层和外层 begin…end块中都定义同名的变量x,按照语句从上到下执行的顺序,如果变量x在整个程序中都有效,则最终结果应该都为inner,但真正的输出结果却不同,这说明在内部begin…end块中定义的变量只在该块内有效。;【例9-3】 该例子说明局部变量只在某个begin…end块内有效。代码如下:
delimiter //
create procedure p1()
begin
declare x char(10) default outer ;
begin
declare x char(10) default inner ;
select x;
end;
select x;
end;
//
上述代码的运行结果如图9-3所示。
图9-3 定义局部变量的运行结果
;应用MySQL调用该存储过程的运行结果如图9-4所示。
图9-4 调用存储过程pl()的运行结果
;2.全局变量
MySQL中的会话变量不必声明即可使用,会话变量在整个过程中有效,会话变量名以字符“@”作为起始字符。下述代码为会话变量的使用方法。
【例9-4】 在该例中,分别在内部和外部begin…end块中都定义了同名的会话变量@t,并且最终输出结果相同,从而说明会话变量的作用范围为整个程序。设置全局变量的代码如下:
delimiter //
create procedure p2()
begin
set @t=1;
begin
set @t=2;
select @t;
end;
select @t;
end;
//;上述代码的运行结果如图9-5所示。
图9-5 设置全局变量
;应用MySQL调用该存储过程的运行结果如图9-6所示。
图9-6 调用存储过程p2()运行结果
;3.为变量赋值
MySQL中可以使用DECLARE关键字来定义变量。定义变量的基本语法如下:
DECLARE var_name[,…] type [DEFAULT value]
DECLARE是用来声明变量的;var_name参数是设置变量的名称。如果用户需要,也可以同时定义多个变量;type参数用来指定变量的类型;DEFAULT value的作用是指定变量的默认值,不对该参数进行设置时,其默认值为NULL。
MySQL中可以使用SET关键字为变量赋值。SET语句的基本语法如
文档评论(0)