今夜IT网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 944|回复: 0

MySQL存储过程

[复制链接]
发表于 2012-7-3 07:24:43 | 显示全部楼层 |阅读模式
    在数据库系统中为了保证数据的完整性和一致性,同时也为了提高其应用性能,大多数的数据库常采用存储过程和存储函数技术(类似于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()//
1341215689_7422.jpg

全局变量:
在mysql中全局变量不需要声明即可以使用,全局变量在整个会话过程中都有效,全局变量以‘@’作为起始字符。例如:
delimiter//
create procedure test2()
begin
set @id=1;
begin
set @id=2;
select @id;     ----------输出2
end;
select @id;            ----------输出2
end;
//
调用上面的代码:
call test2() //
1341215692_9695.jpg
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回列表 官方QQ群

QQ|小黑屋|手机版|今夜IT网 (京ICP备11034012号) 

Powered by Discuz! X3.2

快速回复 返回顶部 返回列表