Google搜索seo推广代做一站式解决方案 - 全天在线驿站

MySQL语句块包含符 (Statement Block Delimiters) MySQL中的语句块包含符类似于JavaScript或PHP中的大括号语法: [identifier:]begin//statements...end [id

MySQL编程从入门到精通:语句块、流程控制与存储过程详解

MySQL语句块包含符 (Statement Block Delimiters)

MySQL中的语句块包含符类似于JavaScript或PHP中的大括号语法:

[identifier:]begin
//statements...
end [identifier];

标识符可以是任意定义的名称,例如:

if (condition)
begin
//...
end;
end if;

流程控制语句 (Flow Control Statements)

1. if语句 (if statement)

基本语法与其他编程语言类似。

2. case语句 (case statement)

相当于其他语言中的switch语句,有两种语法形式:

语法1:
case @v1
when 1 then begin...end;
when 2 then begin...end;
else begin...end;
end case;

语法2:
case
when @v1 > 0 then begin...end;
when @v1 < 0 then begin...end;
else begin...end;
end case;

3. 循环语句 (Loop Statements)

loop循环:
identifier: loop
begin
//循环体
if (condition) then
leave identifier; //退出循环
end if;
end;
end loop identifier

while循环:
set @v1 = 1;
while @v1 < 10 do
begin
insert into tab1 (id, num) values (null, @v1);
set @v1 = @v1 + 1;
end;
end while;

repeat循环:
set @v1 = 1;
repeat
begin
insert into tab1 (id, num) values (null, @v1);
set @v1 = @v1 + 1;
end;
until @v1 >= 10
end repeat;

MySQL变量 (MySQL Variables)

MySQL中有两种变量:

1. 普通变量: 不带@符号,需用declare声明
declare variable_name type [default value];

2. 会话变量: 带@符号,无需声明直接赋值
set @variable_name = value;

存储函数 (Stored Functions)

定义形式:
create function function_name(parameters)
returns return_type
begin
//函数体
return value;
end;

存储过程 (Stored Procedures)

定义形式:
create procedure procedure_name([in|out|inout] parameters)
begin
//过程体
end;

触发器 (Triggers)

定义形式:
create trigger trigger_name
{before|after} {insert|update|delete}
on table_name for each row
begin
//触发器代码
end;

在触发器中可以使用new和old关键字访问数据:
set @v1 = new.id; //获取插入/更新行的id值
set @v2 = old.age; //获取删除行的age值

PHP中调用MySQL存储函数和过程 (Calling MySQL Functions/Procedures in PHP)

//调用存储函数
$sql = "insert into tab1 values(null, now(), func1($v1,$v2))";
$result = mysql_query($sql);

//调用存储过程
$sql = "call insert_user($v1, $v2, $v3)";
$result = mysql_query($sql);

MySQL编程从入门到精通:语句块、流程控制与存储过程详解