存储过程procedure
存储过程,其本质还是函数——但其规定:不能有返回值;
定义形式:
说明:
1,in:用于设定该变量是用来“接收实参数据”的,即“传入”;默认不写,就是in
2,out:用于设定该变量是用来“存储存储过程中的数据”的,即“传出”,即函数中必须对它赋值;
3,inout:是in和out的结合,具有双向作用;
4,对于,out和inout设定,对应的实参,就“必须”是一个变量,因为该变量是用于“接收传出数据”;
调用存储过程:
call 存储过程名 (实参1,实参2,.... )
它应该是在“非编程环境中”调用,即执行增删改查的场景下;
举例1:
#创建一个存储过程:
#该存储过程的目标是:将3个数据写入到表tab_int;
#并返回该表的第一个字段的前3大值的行
调用:
举例2(使用in,out,inout):
下面使用正确调用方法:
删除存储过程:
drop procedure 存储过程名;
在php中使用存储函数或存储过程的示意
<php
//调用存储函数:
$v1 = $_POST[‘a’];
$v2 = $_POST[‘b’];
$sql = “insert into tab1 (id, f2, f3) values ( null, now(), func1($v1 , $v2 ) )”;
$result = mysql_query($sql);
//调用存储过程:
$v1 = $_POST[‘username’];
$v2 = $_POST[‘pass’];
$v3 = $_POST[‘age’];
$sql = “ call insert_user($v1, $v2, $v3 ); ”; //insert_user()是一个存储过程,带3个参数,会将该3个参数数据写入(insert)某个表中。
$result = mysql_query();
另一个使用存储过程返回结果集的例子:
$id = $_GET[‘id’];
$sql = “call Get_User_Info( $id ) “; //Get_User_Info()是一个存储过程,其中会返回某个指定id的用户信息
$result = mysql_query($sql); //这里得到的就是“结果集”了
?>