Home > Database > Mysql Tutorial > body text

(六) MySQL存储过程

WBOY
Release: 2016-06-07 15:09:43
Original
985 people have browsed it

在数据库系统中为了保证数据的完整性和一致性,同时也为了提高其应用性能,大多数的数据库常采用存储过程和存储函数技术(类于C语言中的函数)。MySQL5.0以后开始支持存储过程和存储函数。 1、创建存储过程 create procedure sp_name([proc_parameter[,…]])

    在数据库系统中为了保证数据的完整性和一致性,同时也为了提高其应用性能,大多数的数据库常采用存储过程和存储函数技术(类似于C语言中的函数)。MySQL5.0以后开始支持存储过程和存储函数。

1、创建存储过程

create procedure sp_name([proc_parameter[,…]])

[characteristic…]routine_body

 

Sp_name表示存储过程的名称

Proc_parameter表示存储过程的参数列表

Characteristic表示存储过程中的特性

Routine_body表示参数的SQL代码内容

注:Proc_parameter有三部分组成,分别是输入输出类型,参数名称和参数类型。其形式为[IN | OUT | INOUT] param_name type.

 

例如: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;

//

 

delimeter//    ---这里定义//为结束标志

 

(2)创建存储函数

create function sp_name([func_parameter[,…]])

returns type

[characteristic…]routine_body

 

例如:

delimiter//

create function getName(std_id int)      --定义存储函数名称为getName

returns varchar(50)                     --返回值类型为varchar

begin

return(selectname from tb_student where id = std_id);

end

//

(3)定义变量

局部变量:

局部变量采用declare声明,后面跟变量名和变量类型:declare num int;

也可以同时指定默认值 declare num int default 100;

例如:

delimiter//

create procedure test1()

begin

declare x varchar(10) default ‘chen’;

begin

declare x varchar(10) default ‘qing’;

select x;                     ------这里会输出qing

end;

select x;                     ------这里会输出chen

end

 

调用上面的代码:

call test1()//

(六) MySQL存储过程


全局变量:

在mysql中全局变量不需要声明即可以使用,全局变量在整个会话过程中都有效,全局变量以‘@’作为起始字符。例如:

delimiter//

create procedure test2()

begin

set @id=1;

begin

set @id=2;

select @id;     ----------输出2

end;

select @id;            ----------输出2

end;

//

调用上面的代码:

call test2() //

(六) MySQL存储过程



source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template