在数据库系统中为了保证数据的完整性和一致性,同时也为了提高其应用性能,大多数的数据库常采用存储过程和存储函数技术(类于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中全局变量不需要声明即可以使用,全局变量在整个会话过程中都有效,全局变量以‘@’作为起始字符。例如:
delimiter//
create procedure test2()
begin
set @id=1;
begin
set @id=2;
select @id; ----------输出2
end;
select @id; ----------输出2
end;
//
调用上面的代码:
call test2() //